Почему initWithNibName не работает для моего подкласса UIViewController?
-
21-08-2019 - |
Вопрос
Я выделил 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];
Метод pageViewController initWithNibName был раскомментирован и является просто методом по умолчанию, устанавливающим self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil].
То, что я пробовал:В файле Page1 nib я попытался изменить класс владельца файла между pageViewController и UIViewController.Да, после этого я не забыл снова подключить его к розетке view.
Помогите, пожалуйста!Я в тупике.
Решение
Вы переопределили метод loadView в pageViewController?Что, если вы зарегистрируете viewController1.view?
Действительно, в Interface Builder вы должны установить для владельца файла значение pageViewController и подключить его представление к представлению, которое у вас есть в Interface Builder.