要Subclass或不要Subclass,UITabBarController

时间:2011-10-14 17:02:13

标签: objective-c ios cocoa-touch uikit

所以,就像我遇到UITabBarController的很多人一样,它的不是用于子类化必须是根视图控制器的特性。

我必须管理所有子视图的行为,并且自然的方式似乎有一个他们报告的根视图控制器以及它们之间的消息中继。在我当前的设置中,我有PBModalRootViewController,它实例化一个UITabBarController并将其设置为子视图。 PBModalRootViewController管理子视图并负责解除模态视图。 like so http://p.twimg.com/Abu0iWDCMAAwhuy.jpg:large

这是一个非常干净的解决方案它会导致UITabBarController的狡猾行为,我认为这不是一个子视图。这是我在发货之前需要解决的问题,我有一些解决方案:

  1. UITabBarController的子类,并在稍后处理潜在的影响。

  2. 将PBModalRootViewController重置为PBModalSupervisor。即:使它成为一个启动tabBarController和子视图的类,返回一个很好的配置视图,然后为我监视所有这些视图。
    这可能会导致很多乱七八糟的事情和额外的指针,这可能是一个难以管理。

  3. 简单地以一种巧妙的方式重新设计架构,这将是伟大的,任何想法......

  4. 我没有想过的所有东西......

  5. 我做错了,需要用鳟鱼打耳光!

  6. 使用NSNotificationCentre,可能会因保存,解散等问题而变得有点混乱,仍然需要某处管理解雇逻辑。

  7. UITabBarController上的类别?这将是围绕我想的子类化的一种方式..

1 个答案:

答案 0 :(得分:1)

我认为设置一个主管对象绝对是可行的方法。这取决于您需要在不同视图控制器之间跟踪的信息类型。如果是每个控制器需要知道和/或显示的数据,则需要分离出该数据,并且数据处理对象不应该直接处理视图,因此它不应该是视图控制器。