2012-11-14 35 views
1

我在故事板这样的观点: view consist of fixed controls and controls that changes according to the type of controller控制多个视图的最佳做法是什么?

,你可以看到有一些固定的控制,和其他人,根据屏幕的类型而改变。 你认为哪个更好?

1-用于多个屏幕的相同视图控制器。 (更多代码来控制视图)

2-在同一屏幕中添加所有控件,然后通过代码隐藏和显示它们? (乱码)

3-查看每个屏幕的控制器。 (复制代码)

回答

3

不要使用“窗口”这个词,它可能会导致对你想说的内容的不同解释。使用单词“屏幕”或“屏幕的部分”。在这种情况下,我会使用一个容器UIViewControllers。要在此之间进行通信,请使用KVONSNotificationCenter(很可能是第二个)。还要确保没有数据源直接在UIViewController上(如数组或字典)。将数据源保存在其他地方,所有UIViewController(或任何类别)都可以轻松访问。你可以去一个单身人士。

将数据源置于远离而不是直接位于UIViewController的位置,为您提供了更多的代码灵活性。如果你需要使用新的UIViewController,没有什么改变,他仍然可以从同一点请求资源。所以记住这一点。


编辑1

数据源也是视图控制器里面,有屏幕之间没有 相互作用,它是相同的屏幕,但某些控件根据它的类型 变化,你觉得我现在必须做 ?

用这种方法的问题是,如果你需要,出于某种原因添加新的UIViewController,也使用相同的数据源,你怎么现在怎么办?我总是尽可能地从数据源中解耦UIViewController。否则,如果应用程序发生变化(客户需求发生变化),您将来可能会遇到问题。再次,将数据源移动到适当的类,并使用单例访问它。

UIViewController <=> Singleton <=> Data Source 

所以,现在你的建议,使多个视图控制器与多屏?

我建议UIViewController作为其他人的容器UIViewControllers。对我而言,在我去的时候组合屏幕更有意义,而不是在一个地方做所有事情。

+0

当前所有视图都具有相同的视图控制器,它们都具有连接到相同视图控制器的插座。 数据源也在视图控制器内部,屏幕之间没有交互,屏幕是相同的,但是一些控件根据其类型而改变,您认为我现在必须做什么? – Mhdali

+0

这是一种可能性,虽然我更喜欢“分而治之”。 – Peres

+0

顺便说一下,数据源不是问题,因为所有屏幕与数据源的交互方式都是一样的,所以现在您建议使用多个屏幕制作多个视图控制器? – Mhdali

0

我肯定会去没有3.这种方法是最灵活的!并且它很干净=>保持良好

相关问题