Обратите внимание, что каждая кнопка, метка, изображение и т. Д. В вашем контроллере основного вида на самом деле является представлением само по себе, однако я понял, что ваш вопрос означает, что вы хотите управлять несколькими полноэкранными представлениями или "экранами". Каждый экран должен иметь свой собственный контроллер вида для управления им. Таким образом, чтобы получить правильную терминологию, контроллер представления - это объект, который управляет одним полноэкранным представлением (или почти полноэкранным, если он вложен, например, в контроллер навигации или контроллер панели вкладок), а представление - это большая область, управляемая контроллер представления, а также все вложенные представления (изображения, кнопки, метки и т. д.) внутри него (все они являются подклассами UIView). Контроллер представления управляет всеми ими на этом экране, если вам нужен другой экран / страница, вам нужно создать новый контроллер представления для управления им.
Корневой контроллер вида (тот, который вы добавляете в окно) может быть обычным старым контроллером обычного вида, который вы спроектировали в IB, однако это, вероятно, более полезно, если вы используете контроллер навигации или контроллер панели вкладок и добавляете ваш разработанный контроллер представления к этому - тогда вы можете выдвинуть дополнительные контроллеры представления по мере необходимости.
Другим способом (если вам не нужен стиль навигации или стиль панели вкладок) будет переход на другие контроллеры представления непосредственно в главном окне с использованием любых переходов, которые вам нравятся (или просто замена старого). Мы пока оставим это.
Любые вложенные представления вашего основного контроллера представления (тот, который вы создали в IB) будут автоматически загружаться из файла пера, но вы также можете добавлять свои собственные представления программно, если хотите (обычно вы используете один или другой, то есть программно nibs или , но вы можете смешивать и сочетать, если хотите). Чтобы сделать это программно, переопределите loadView
в контроллере представления и затем вызовите [super loadView];
, затем выполните [self.view addSubView:myOtherView];
(сначала создайте myOtherView
, конечно). Обратите внимание, что при первом обращении к .view
на вашем контроллере представления он фактически вызывает loadView
для создания представления, поэтому внутри loadView
важно вызвать [super loadView];
, прежде чем пытаться получить доступ к self.view
: D
Переключение между представлениями с помощью контроллеров навигации или панели вкладок делает это очень простым. Так что поместите ваш контроллер основного вида внутри (например) контроллера навигации и поместите контроллер навигации в окно, чтобы вы получили window-> navigationController-> myController. Затем из метода действия в вашем контроллере представления (вы можете подключить методы действия в IB), например, когда нажата кнопка «о», сделайте следующее:
- (void)doAbout
{
// Create the about view controller
AboutViewController* aboutVC = [AboutViewController new];
// Push the view controller onto the navigation stack
[self.navigationController pushViewController:aboutVC animated:YES];
[aboutVC release];
}
Обратите внимание, что контроллер about view создается здесь программно - если ваш about view разработан в IB, вместо этого используйте initWithNibName:bundle:
для его создания.
И вот как вы управляете несколькими экранами.