Добавить subview из xib или другой сцены с раскадрой
Я новичок в iOS и Xcode.
Я не могу понять, как создать отдельный вид и сделать его добавленным в основной UIViewController с помощью раскадровки.
Я сделал разные подходы.
- Просто возьмите объект UI из окна нижнего угла справа в xcode и затем поместите его в любую область пространства раскадровки. Но я не могу отказаться от объекта пользовательского интерфейса, как с помощью xib.
- Добавить новый UIViewController. Добавьте представление в
UIViewController
. В главном ViewController.m я получаю новый экземпляр UIViewController
в viewDidLoad, а затем [self.view addSubview:newUIViewController.view]
. Но я не вижу добавленного представления.
- Я создал новый xib файл. И добавьте в него представление. Я также пытаюсь получить экземпляр в главном
ViewController
. И addSubview
с видом xib. Но он также потерпел неудачу.
Есть ли правильный способ или любое рабочее решение для этого?
Ответы
Ответ 1
Я понял способ сделать это.
Описывается следующее:
- Создайте файл .xib. Например: MyView.xib
- Создайте класс objective-c. Например: MyViewClass.h и MyViewClass.m
- Установите в качестве владельца файла .xib файл.
- Добавьте элемент UIView в раскадровку и установите собственный класс в имя класса objective-c (MyViewClass).
-
Ключевым моментом является переопределение метода initWithCoder в классе object-c.
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
[self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] objectAtIndex:0]];
}
return self;
}
Идея заключается в том, что пользовательский класс загружается раскадровкой и вызывается initWithCode.
Индекс 0 является корневым представлением в построителе интерфейса .xib.
Это сложно, но это работает.
Ответ 2
В раскадровке перетащите контроллер просмотра. Контроллер представлений имеет основной вид. Выберите этот основной вид, щелкнув за пределами добавленного контроллера просмотра, а затем щелкнув по центру. Теперь просто перетащите uiview или что-то еще в этот основной вид, как и вы с IB.