2010-09-23 69 views
0

我的问题是关于在UIViewControllers之间实现信息传递的最佳方式。通过视图控制器调用方法

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

什么是最好的实施方式?通过appdelegate?或者通过将ViewControllerA的引用传递给ViewControllerB?欣赏任何帮助或例子的最佳方式来做到这一点。

+0

[Invoke method in another class]的可能重复(http:// stackoverflow .com/questions/1186620/invoke-method-in-another-class) – 2010-09-23 23:11:36

回答

1

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

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

通常,尽量保持控制器之间的数据共享最小化。让他们引用模型对象来获取他们的数据。

+0

谢谢alexantd,会试试看看它的感受。 – kevj 2010-09-27 21:42:28

0

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

+0

感谢hotpaw2,这很有道理,会尝试一下。 – kevj 2010-09-27 21:46:16

相关问题