Общий ответ таков: у вас есть объект, который управляет тем, какой контроллер представления загружается, когда.
Чаще всего используется UINavigationController . Это UIViewController, который вместо управления представлениями контролирует другие контроллеры представления. Это работает как простой стек. Вы помещаете представления, которые хотите отобразить, в стек контроллеров навигационной системы, а когда хотите, чтобы они исчезли, вы отключаете их.
Распространенный (хотя и небрежный) способ использования навигационной системы - сделать ее свойством делегата приложения. Тогда в любом месте вашего приложения вы можете ссылаться на него:
UINavigationController *nav=[[[UIApplication sharedApplication] delegate] navigationController];
Контроллер вида для первого, который видит пользователь, содержится в свойстве nav1 topViewController
. Если вы хотите загрузить представление на основе действий пользователя в topViewController.view, у вас будет что-то вроде этого:
- (IBAction) loadNextView:(id) sender{ // Action called by a a UI event such as a button press.
UINavigationController *nav=[[[UIApplication sharedApplication] delegate] navigationController];
UIViewController *nextViewController=...// load from nib, connect with IBOutlet, create programmatically
[nav pushViewController:nextView animated:YES];
}
Первый вид исчезает и заменяется следующим. Чтобы вернуться к первому виду, у вас есть метод в следующем контроллере вида, например:
- (IBAction) unloadSelf:(id) sender{ // Action called by a a UI event such as a button press.
UINavigationController *nav=[[[UIApplication sharedApplication] delegate] navigationController];
[nav popViewControllerAnimated:YES];
}
... и навигационная панель автоматически возвращает вас к предыдущему виду независимо от того, каким оно было.
При первом запуске, особенно если вы используете Interface Builder, структура приложения в значительной степени скрыта. За кулисами все контроллеры представлений и их представления существуют в некоторой иерархии, которая ведет обратно к делегату приложения. Вы должны научиться мыслить иерархически, даже если не сразу очевидно, как устроена эта иерархия.