以前は UINavigationController を使用していました。私はそれをシングルトンとして作成し、静的にアクセスして、コントローラーを簡単にプッシュおよびポップできるようにしました (ここにかなり良いチュートリアルがあります)。これは非常に軽量で、すぐに使い始めるのに十分なドキュメントがあります。
ただし、私が使用した最善のアプローチは、Three20フレームワークの TTNavigator です。一言で言えば、内部 URL を呼び出して新しいビューを画面にプッシュできる強化された UINavigator です。
//(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" を ResultsViewController の init メソッド ("initToView:") に渡します。これは、マッパーで定義したとおりです。
ではごきげんよう!