Вопрос

У меня есть приложение с 2 экранами (MainViewController и AboutViewController).Когда пользователь нажимает кнопку, я хотел бы загрузить экран AboutViewController, который определен в другом XIB.

Кажется простым, но, похоже, сегодня я не могу найти свой google-fu.Как мне это провернуть?

Это было полезно?

Решение

Когда ты позвонишь [AboutViewController init], ожидается , что это вызовет некоторую форму [super init], который является синонимом [UIViewController init].Когда это произойдет, ваш контроллер просмотра автоматически выполнит поиск файла nib, вызываемого (в вашем случае) AboutViewController.xib.Если он находит этот файл, он загружает его содержимое в ваш контроллер просмотра для вас.

Итак, по сути, все, что вам нужно сделать, это инициализировать ваш view controller и убедиться, что у него то же имя, что и у связанного файла nib.

Если вы хотите загрузить файл nib с другим именем в свой контроллер представления, вы могли бы явно вызвать initWithNibName:bundle: с именем любого файла nib, который вам нравится.

Если стандартная инициализация (с одноименным файлом nib) у вас не работает, есть пара вещей, которые вы могли бы проверить.

  • написание имени класса совпадает с написанием (и регистром) файла nib
  • файл nib включен в проект, а не просто находится в том же каталоге
  • ваш UIViewController метод init подкласса также вызывает [super init]
  • вы называете свой UIViewController метод инициализации подкласса
  • вы действительно делаете видимым представление вашего view controller

Другие советы

С помощью экрана "О программе" вы, вероятно, просто хотите показать представление, а затем отклонить его.Таким образом, вместо того, чтобы использовать совершенно новый контроллер представления, вы можете просто закрыть текущее представление.

Предполагая, что у вас есть ивар

UIView *aboutUsView;

с соответствующим свойством.

На ваш взгляд, контроллер делает:

[[NSBundle mainBundle] loadNibNamed:@"AboutUsView" owner:self options:nil]; // Retains top level items
[self.view addSubview:aboutUsView];  // Retains the view
[aboutUsView release];

Чтобы удалить представление, скажем, в действии, связанном с кнопкой на представлении, выполните:

[aboutUsView removeFromSuperview], aboutUsView = nil;  // Releases the view

NSBundle loadNibNamed с именем:

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