在基于导航的应用程序中拥有UINavigationController的最佳实践?

Ben*_*tto 2 iphone cocoa-touch uiviewcontroller uinavigationcontroller

我的小应用程序越来越庞大,我正在寻找关于视图控制器和导航控制器的管理/所有权的一些最佳实践建议.

这就是我现在正在做的事情:

  1. AppController是一个创建并拥有UINavigationController实例的单例.app控制器以及导航控制器可以通过+sharedController类似的方法全局访问.
  2. 应用程序中希望推送新视图控制器的每个视图控制器基本上都这样做:

    NextViewController * nextViewController = [[NextViewController alloc] init]; [[[AppController sharedController] navigation] pushViewController:nextViewController ...]; [nextViewController release];

通过这种方式,所有"叶子"视图都负责创建下一个视图并推送它,导航控制器位于每个人都可以到达的地方.

但我自己做了这个.由于通过视图控制器导航是一个非常重要的架构,我想知道是否有人在这里有更好或更周到的方法.

谢谢.

bpa*_*apa 7

每个视图控制器都有一个navigationController属性.如果UIViewController是导航堆栈的一部分,则设置此属性,以便您可以获取对UINavigationController的引用.所以,不必引用AppController(或者甚至可能只有一个 - 你可以把它放在AppDelegate中),你可以这样做:

NextViewController * nextViewController = [[NextViewController alloc] init];
[self.navigationController pushViewController:nextViewController ...];
[nextViewController release];
Run Code Online (Sandbox Code Playgroud)