Почему 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.