Я использовал UINavigationController. Я создал его как синглтон и получал статический доступ к нему, чтобы можно было легко нажимать и извлекать контроллеры (вот довольно хороший учебник здесь ). Это довольно легкий и достаточно документации, чтобы быстро приступить к работе.
Однако лучший подход, который я использовал, это TTNavigator фреймворка Three20 . В двух словах, это улучшенный UINavigator, который позволяет вам выдвинуть новое представление на экран, вызвав внутренний URL:
//(In your app delegate)
//Start up the navigator
TTNavigator* navigator = [TTNavigator navigator];
navigator.persistenceMode = TTNavigatorPersistenceModeTop;
//Map url's to controllers
TTURLMap* map = navigator.URLMap;
[map from:@"*" toViewController:[TTWebController class]];
[map from:@"ac://search" toViewController:[SearchViewController class]];
[map from:@"ac://results/(initToView:)" toViewController:[ResultsViewController class]];
Затем перейти к контроллеру:
[[TTNavigator navigator] openURLAction:[[TTURLAction actionWithURLPath:@"ac://results/searchResults/"] applyAnimated:YES]];
Круто также то, что вызов этого @ "ac: // results /", как мы описали выше, передается в параметре @ "searchResults" методу init в ResultsViewController ("initToView:"), как мы определили в картограф
Всего наилучшего!