Iphone 在基于导航的应用程序中拥有UINavigationController的最佳做法?

Iphone 在基于导航的应用程序中拥有UINavigationController的最佳做法?,iphone,cocoa-touch,uiviewcontroller,uinavigationcontroller,Iphone,Cocoa Touch,Uiviewcontroller,Uinavigationcontroller,我的小应用程序越来越庞大,我正在寻找一些关于视图控制器和导航控制器的管理/所有权的最佳实践建议 以下是我现在正在做的: AppController是创建并拥有UINavigationController实例的单例。应用程序控制器和导航控制器可以通过类似于+sharedController的方法进行全局访问 应用程序中希望推送新视图控制器的每个视图控制器基本上都会执行以下操作: NextViewController*NextViewController=[[NextViewController a

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

以下是我现在正在做的:

  • AppController是创建并拥有UINavigationController实例的单例。应用程序控制器和导航控制器可以通过类似于
    +sharedController
    的方法进行全局访问
  • 应用程序中希望推送新视图控制器的每个视图控制器基本上都会执行以下操作:

    NextViewController*NextViewController=[[NextViewController alloc]init];
    [[[AppController sharedController]导航]pushViewController:nextViewController…];
    [nextViewController发布]

  • 通过这种方式,所有“叶”视图负责创建下一个视图并将其推送,导航控制器位于每个人都可以到达的一个位置

    但这是我自己做的。由于通过视图控制器导航是架构中的一个关键部分,我想知道是否有人有更好或更周到的方法


    谢谢。

    为什么不在需要推送的视图中使用
    self.navigationController
    ?在AppController中唯一需要做的事情就是在导航控制器上推送初始视图。

    每个视图控制器都有一个
    navigationController
    属性。如果UIViewController是导航堆栈的一部分,则会设置此属性,以便可以获取对UINavigationController的引用。因此,您不必引用AppController(或者甚至根本不需要引用AppController—您可以将其放入AppDelegate中),只需执行以下操作:

    NextViewController * nextViewController = [[NextViewController alloc] init];
    [self.navigationController pushViewController:nextViewController ...];
    [nextViewController release];
    

    嗯,这很有道理。我怎么会错过这个?谢谢