Почему initWithNibName не работает для моего подкласса UIViewController?

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

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];

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

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

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

Ответы

Ответ 1

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

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