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

StackOverflow https://stackoverflow.com/questions/1068368

Вопрос

Я выделил 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top