iPhone:如何在Tabbar应用程序中的几个View控制器之间传递数据

Sim*_* D. 20 iphone objective-c uitabbarcontroller uiviewcontroller

我有以下问题:

我已经构建了一个带有4个选项卡的tabbar应用程序 我想将一个对象/变量从第一个选项卡控制器传递给第三个控制器控制器,并使用相应的对象初始化该控制器.

我已经做了一些研究.对应于干净模型方法的最佳方法是在被调用的viewcontroller上调用一些initWithObject:方法.我怎样才能做到这一点?如何在调用者init控制器中调用receivercontroller 的方法?你能给我一些代码示例吗?

编辑:要在几个视图/类之间传递数据等,只需创建一些数据类,它保存在几个类之间共享的数据.有关更多信息,请访问以下链接: Singleton

Tec*_*Zen 28

您需要一个存储应用程序数据的数据模型对象.

数据模型是可从应用程序中的任何位置访问的自定义独立对象.数据模型对象对任何视图或视图控制器一无所知.它只存储数据和该数据之间的逻辑关系.

当应用程序的不同部分需要写入或读取数据时,它们会对数据模型进行写入和读取.在您的情况下,view1将在卸载时将其数据保存到数据模型,然后view2将在加载时从数据模型中读取该数据(反之亦然).

在设计合理的应用程序中,没有两个视图控制器可以访问另一个控制器的内部数据.(视图控制器需要知道另一个控制器是否存在的唯一原因是它是否必须触发另一个控制器的加载.)

创建数据模型的快速而肮脏的方法是向应用程序委托添加属性,然后使用以下命令从视图控制器调用应用程序委托:

YourAppDelegateClass *appDelegate = [[UIApplication sharedApplication] delegate];
myLocalProperty = appDelegate.someDataModelProperty;
Run Code Online (Sandbox Code Playgroud)

这适用于小型项目,但随着数据变得复杂,您应该为数据模型创建专用类.

编辑:

为了澄清您的具体情况,您将在接收器viewController变为活动状态时添加对数据模型的调用.

将数据放在init方法或a viewDidLoad中将无法工作,因为UITabBar用户可以在不卸载视图或重新初始化视图控制器的情况下来回切换.

检索更改数据的最佳位置是viewWillAppear控制器方法.这样,每次用户切换到该选项卡时,数据都会更新.