几个UIViewControllers和UIViews的关系

时间:2013-07-19 09:39:00

标签: ios objective-c cocoa-touch uikit

我有一个compex UIViewController(及相关视图)。它由几个具有自己的视图控制器的子视图组成。 (例如,很少有UITableViewController子类,自定义ViewContorllers等。)。

您认为在根视图(而不是视图控制器类)中存储子视图控制器的引用是一个很好的决定。 我正在构建根视图类中的视图结构,就像那样(添加view / viewcontroller的几种方法之一):

- (void)addCaroucel
{
  _caroucelViewController = [[CaroucelTableViewController alloc] init];
  _caroucelViewController.caroucelView.delegate = self;
  [self addSubview:_caroucelViewController.caroucelView];
}

我知道控制器应该在主控制器中,但同时这就像视图的内部实现一样,我不想用主视图控制器来公开它。我认为视图层次结构应该在视图类中构建,而不是在视图控制器中构建。

你看到了更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我认为更好的解决方案是:

一个ViewController用于一个屏幕。所有tableViews,按钮,视图等......都有一个共同的委托 - 这个viewController。不要尝试将某些控制器的逻辑分开。您尝试添加另一个视图控制器,因为您已经分开了。

在我看来,我也知道两种不好的方式,在这种情况下它们并不那么简单:

  1. 您可以创建单件类作为此控制器的管理器。它将处理来自此控制器的所有逻辑,但不会创建“上帝”类。
  2. 所有控制器都是分开的,并通过Notification机制观察/发布消息。