我曾经使用 UINavigationController。我将它创建为单例并静态访问它,因此我可以轻松地推送和弹出控制器(这里有一个相当不错的教程)。这是非常轻量级的,并且有足够的文档可以快速使用它。
然而,我使用的最佳方法是Three20框架的 TTNavigator。简而言之,它是一个增强的 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" 传递给我们在映射器中定义的 ResultsViewController ("initToView:") 的 init 方法
一切顺利!