2013-08-30 3 views
12

Извините, может быть, вопрос о нобе, ребята. Я новичок в разработке iOS.Как создать контроллер представления, определенный в XIB?

Как создать контроллер представления, определенный в 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

ответ

4

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

+0

Это настоящий ответ. Вы пришли к правильному выводу, и другие люди просто не поняли вопрос. – SuitedSloth

2

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

+0

Да, это работает. Это будет стандартный XIB-код XIB. Но мне было интересно, как я могу это сделать без использования File's Owner и просто использовать элемент viewController в XIB? – expert

+0

Вам не нужен элемент 'viewController'. В большинстве случаев владельцем файла является контроллер вида. – cahn

+1

Если не нужно, почему я могу создать 'viewController' в интерфейсе Builder, то? :) – expert

7

Создать один XIb на UIViewController

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

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

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

+0

Спасибо! Какова цель элемента 'viewController' в' EmbeddedViewController.xib' в вашей версии файла? – expert

+0

Я забыл удалить. Просто удалите его –

+0

Но тогда я получу то, что генерирует Xcode из шаблона. – expert

0

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

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

Где myViewFromNib ваш объект вида и «Просмотр» Ваше имя СИБ.

+0

Вопрос был о контроллере представления, а не о представлении. –

Смежные вопросы