跨视图控制器调用方法

时间:2010-09-23 23:00:17

标签: iphone uiviewcontroller

我的问题是在UIViewControllers之间实现信息传递的最佳方法。

如果我有一个带有2个ViewControllers的应用程序,例如用户在ViewControllerA中选择一个项目,那么它应该在ViewControllerB中显示该项目和更多细节。

实施此操作的最佳方法是什么?通过appdelegate?或者通过将ViewControllerA的引用传递给ViewControllerB?感谢任何帮助或最佳方法的例子。

2 个答案:

答案 0 :(得分:1)

ViewControllerA(VCA)将维护对ViewControllerB(VCB)的引用。 VCB将对所选对象的引用保持为ivar。当用户在VCA中选择一个对象时,VCA实例化VCB(如果尚未实例化),则将VCB的selectedObject属性设置为该对象,然后按下VCB。 VCB从分配给其selectedObject属性的对象中读取,以将其信息绘制到视图中。

在VCA中,对于用户可以选择的每个“项目”,需要有支持该项目的基础对象实例。例如,如果用户从蔬菜列表中进行选择,则UITableView可能由蔬菜对象的NSArray支持。

通常,尽量将控制器之间的数据共享保持在最低限度。让他们参考模型对象来获取他们的数据。

答案 1 :(得分:0)

尝试使用MVC设计模式。将所有共享状态信息放入在应用程序的更高或最高级别创建的Model对象(MVC中的M)。创建两个视图控制器时,允许他们访问模型对象(通过在每个视图控制器中设置属性)。然后视图控制器可以存储和访问所需的任何共享状态,并且您可以将其集中用于调试,存储,可扩展性,重用等。