it-swarm.com.ru

Как я могу создать контроллер представления, который определен в XIB?

Извините за возможно нуб вопрос, ребята Я новичок в разработке iOS.

Как я могу создать контроллер представления, который определен в XIB?

Когда вы создаете новый класс, унаследованный от UIViewController в Xcode, через «Новый файл» и устанавливаете флажок with XIB, он создает файл xib, который не имеет элемента viewController. Но скорее он имеет placeholder, который указывает на UIViewController, который определен в коде.

Но я вижу, что вы можете создать сам контроллер в Interface Builder и указать для него customClass.

К сожалению, это не работает для меня. Я получаю ошибку loaded the "EmbeddedViewController" nib but the view outlet was not set во время выполнения. Но я полагал, что свойство view должно быть установлено загрузчиком ресурсов автоматически, так как все определяется через XIB. Так работает для TableView и его ячеек, например.

Не могли бы вы привести пример, как это сделать?

Я создал пример проекта: https://github.com/cppexpert/SampleWithNib

Рассматриваемый контроллер: EmbeddedViewController

13
expert

Оказалось, что эти элементы управления существуют в IB для проектов раскадровки.

5
expert

Создайте один Xib для UIViewController

У каждой Xib есть объект-владелец файла, чтобы вы могли установить там класс UIViewController. Нажмите «Владелец файла» и выберите «EmbeddedViewController» в своем классе. 

Затем перетащите туда основной класс UIView, а не класс UIViewController, затем подключите это представление с владельцем файла в качестве представления. UIViewController просто использовать для перетаскивания в базовый проект StoryBoard.

https://github.com/lequysang/gitfiles02/blob/master/SampleWithNib-master.Zip

7
LE SANG

Когда вы создаете контроллер представления с xib через «новый файл», Xcode генерирует UIView и автоматически связывает его с выходом view. Похоже, вы что-то изменили после того, как Xcode сгенерировал файл xib. В этом случае вам необходимо подключить представление к выходу view вручную.

2
cahn

Если вы создаете новое представление в xib.set для владельца файла для своего пользовательского класса . Или если вы просто хотите создать представление . Тогда 

NSArray* test1 = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
self.myViewFromNib = [test1 objectAtIndex:0];

Где myViewFromNib - это ваш объект просмотра, а «View» - ваше имя пера.

0
Subrat