【问题标题】:Handle different view controllers within an application: creating Custom Content View Controllers在应用程序中处理不同的视图控制器:创建自定义内容视图控制器
【发布时间】:2018-07-13 20:32:14
【问题描述】:

在应用程序开发期间,我无法支持正确的应用程序架构。这对于我目前正在开发的应用程序来说是正确的。特别是,我需要支持如下架构。

如您所见,MainViewController 是应用程序的主控制器,必须在应用程序生命周期内管理不同的控制器。在这种情况下,MainController 是一种集中式控制器(其视图的子视图始终位于前面,将其视为菜单视图),它管理应用程序的不同状态(例如 LOGIN_AREA、HOME_AREA 等)。

下面我写了一些实现上述架构的考虑。

由于MainViewController 需要始终在其他视图(UIviewControllerX 的视图)前面显示其视图的子视图,因此我将其设置为rootViewController

由于MainViewController 必须由其他控制器访问(例如UIViewControllers1),它们需要有一个(弱)引用它。

MainViewController 有一个公共方法来管理应用程序状态。它存储当前控制器并将所选控制器视图添加到其视图中作为其子视图。例如:

- (void)manageController
{
   if(currentState == LOGIN_AREA)
   {
      self.currentController = [[[LoginViewController alloc] init] autorelease];
   }

   // other stuff here...

   [self.view addSubView:self.currentController.view];
} 

上述模式似乎有效,但我不太确定它是否正确。上瘾时,如果UIViewController(例如UIViewController1)必须是UINavigationController,情况就会变得复杂。

我读过View Controller Programming Guide for iOS。特别是,我发现Creating Custom Content View Controllers 部分很有趣,但我还没有找到任何示例来创建自定义示例。

所以,我的问题如下。

您能给我一些实现以下架构的建议吗?或者你能给我一些开发自定义内容视图控制器的技巧吗?

【问题讨论】:

  • 你好像把 UIViewControllers 和 UIViews 搞混了?
  • 也许我的问题不清楚。为什么你会想到这种混乱?提前谢谢你。

标签: ios architecture uiviewcontroller


【解决方案1】:

对于那些感兴趣的人。

要实现类似的机制,有两种不同的方法。

1) 实现自定义内容容器。这是一项复杂的任务,但这是可能的。更多信息请阅读writing-high-quality-view-controller

2) 使用新的 iOS 5 API。更多信息可以阅读UIViewController Class Reference中的实现容器视图控制器部分。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多