【问题标题】:Best practice for ownership of a UINavigationController in a navigation based app?在基于导航的应用程序中拥有 UINavigationController 的最佳实践?
【发布时间】:2023-03-24 00:42:01
【问题描述】:

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

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

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

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

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

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

谢谢。

【问题讨论】:

    标签: iphone cocoa-touch uiviewcontroller uinavigationcontroller


    【解决方案1】:

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

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

    【讨论】:

    • 嗯,这很有意义。我怎么会错过这个?谢谢!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-09-10
      • 2021-11-06
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      相关资源
      最近更新 更多