0

我想构建一个具有一个主视图的应用程序,该主视图大部分时间都在屏幕上。部分视图是不变的并显示主要控件。但是,有一个特殊的子视图取决于应用程序的状态。应用程序的状态以特殊的“状态对象”呈现。一次只能有一个“状态对象”处于活动状态,但它们可以有非常不同的逻辑,并且应该以不同的用户界面呈现(在这个特殊的子视图中)。

显然,我可以通过分析当前状态对象的类型,在主视图的ViewController中进行处理。我可以创建一个 biiiig 开关,其中包含大量特定于状态对象可能具有的每个可能的类的代码,并在每次添加新的状态对象子类时添加一些代码......但这听起来不是一个好的架构大部头书。我希望状态对象或特定于它们的不同 ViewController 来控制这个特殊的视图。不幸的是,我对视图、视图控制器和委托感到有点迷茫,不明白我究竟如何才能做到这一点。

4

3 回答 3

1

如果您需要在这些 slate 视图中处理大量逻辑内容,您可能希望将它们作为视图控制器,然后在需要时使用容器方法将它们添加到主视图控制器,如Session 102 - Implementing UIViewController Containment中所示。基本上是这样的:

[self addChildViewController:childViewController];
[childViewController didMoveToParentViewController:self];
[self.view addSubView:childViewController.view];

您甚至可以使用此方法进行过渡动画:transitionFromViewController: toViewController: duration: options: animations: completion:

于 2012-08-08T18:51:44.103 回答
0

It is important to remember that the View Controller and the UI (XIB) are two different things. You can implement a controller to handle the logic of your various subviews and then bind that instance of your controller to a different UI based on context using init with NibName...

This allows you to write your controlling logic once and spawn as many different and varied UI experiences as you need. The XIBs would all need to tie back to a centralized set of IBOutlets and you will be all set. Chances are there are large areas of similarity ion the sub-views given they still live in the overall context of your app. This strategy of one view controller to potentially many XIBs helps simplify development along those lines.

Good Luck.

于 2012-08-08T18:58:14.267 回答
0

每个不同的子视图类型都是一个单独的视图控制器,具有自己的关联视图。

于 2012-08-08T19:32:00.563 回答