如何在iOS上的ViewControllers之间传递对象?

时间:2011-06-03 13:29:42

标签: iphone cocoa-touch ios

使用Xcode 4中的“Tab Bar”模板,每个ViewController都是自动创建的,因此我没有机会在ViewController创建时设置任何属性。我希望每个ViewController都能访问一个对象(FMDB的FMDatabase的一个实例)。

StackOverflow上有很多与此相关的问题,但有些人假设您是手动创建VC,而其他人建议使用AppDelegate作为调解员:

MyAppDelegateClass *appDelegate = [[UIApplication sharedApplicaton] delegate];
myLocalProperty = appDelegate.someDataModelProperty;

以上看起来对我来说相当“hacky”。有没有更好的方法从多个ViewControllers访问单个对象?

3 个答案:

答案 0 :(得分:3)

FMDB数据库的最可能实现是将其实现为Singleton并通过应用程序访问它。有没有理由不这样做?

此链接可以帮助您: How do I make FMDB's database a singleton

答案 1 :(得分:0)

要扩展KKK4SO的答案,您可以将数据库实现为单例。然后,让所有的UIViewControllers都是一个子类UIViewController,它包含访问和修改数据库单例的方法。

答案 2 :(得分:0)

MyAppDelegateClass * appDelegate = [[UIApplication sharedApplicaton] delegate]; myLocalProperty = appDelegate.someDataModelProperty;

此代码中存在拼写错误'sharedApplicaton'拼写错误,应该是'sharedApplication'。

羞辱我复制和粘贴!无论如何,这将适用于在ViewControllers等之间传递数据的快速而肮脏的方式。