2009-07-01 6 views
14

Я подклассифицировал UIViewController в новый класс, PageViewController (я пишу простое книжное приложение). Я хочу добавить новый вид, загруженный из файла nib, и использую следующий код. Оно работает.Почему initWithNibName не работает для моего подкласса UIViewController?

PageViewController *viewController1 = [[UIViewController alloc] initWithNibName:@"Page1" bundle:nil]; 
[viewController1.view setUserInteractionEnabled:YES]; 
[self.view addSubview:viewController1.view]; 

Однако первая строка неверна, потому что я должен вызывать alloc на PageViewController. Когда я его исправляю (ниже), код компилируется, но файл xib не загружается, а представление просто прозрачно.

PageViewController *viewController1 = [[PageViewController alloc] initWithNibName:@"Page1" bundle:nil]; 
[viewController1.view setUserInteractionEnabled:YES]; 
[self.view addSubview:viewController1.view]; 

Метод PageViewController initWithNibName был раскомментировал и только по умолчанию, установка собственного = [супер initWithNibName: nibNameOrNil сверток: nibBundleOrNil].

Что я пробовал: В файле Page1 nib, я попытался изменить класс File Owner между PageViewController и UIViewController. Да, я вспомнил, что потом подключил его к выходу.

Помогите, пожалуйста! Я в тупике.

+0

Может быть ошибка в вашей перекрытой методе initWithNibName – oxigen

+0

Это просто по умолчанию: - (ID) initWithNibName: (NSString *) nibNameOrNil расслоение: (NSBundle *) nibBundleOrNil { если (само = [супер initWithNibName: nibNameOrNil расслоения : nibBundleOrNil]) { // Пользовательская инициализация \t \t NSLog (@ "В пользовательском инициализации pageviewcontroller"); } return self; } – niels

ответ

16

Вы переопределили метод loadView в PageViewController? Что делать, если вы NSLog viewController1.view?

Действительно, в интерфейсе Builder вы должны установить владельца файла в PageViewController и подключить его представление к виду, которое у вас есть в Interface Builder.

+2

СПАСИБО! Ошибка не была в loadView, она была в viewDidLoad - у меня был некоторый код в viewDidLoad в PageViewController, который переписывал инициализацию файла nib. Я провел прошлую ночь с 2 утра до 4 утра, пытаясь отследить это, спасибо за помощь! – niels