如何从viewcontrollers的价值获得appdelegate?

时间:2009-11-23 05:40:20

标签: iphone

我知道如何在Viewcontroller中访问appdelegate的值,如

 YourDelegate *appDelegate = (YourDelegate *)[[UIApplication sharedApplication] delegate];

但我想要这样的简单方法,当我想从viewcontroller获取值到appdelegate(逆序).....?任何帮助......?

假设我在appdelate中有一个方法。我想从视图控制器页面获取数据值,我想在appdelegte.m文件中使用它.......?

3 个答案:

答案 0 :(得分:1)

更一般地解决这个问题...如果你想对一个对象做任何事情 - 给它发一条消息(在一个对象上调用一个方法),访问一个对象的一些属性,把对象作为一个参数传递给一些其他方法 - 您需要对该对象的引用。

这意味着,在您的情况下,您的AppDelegate需要您想要访问某些属性的视图控制器的引用。如果在您的app委托中分配和初始化视图控制器,这就像在代理中存储对所述视图控制器的引用一样简单,直到您需要使用它(使用实例变量或其他)。如果不是,那么您需要做一些其他事情来让您的应用程序委托对视图控制器的引用 - 执行此操作的步骤将取决于视图控制器的创建位置和方式。没有更具体的细节,我无法帮助您完成这些步骤。


模型 - 视图 - 控制器(MVC)旁注:

如果您正在遵循MVC设计实践,则视图控制器(或任何其他控制器类)不是应存储您的状态信息或其他应用程序数据的对象。该作业应该由模型对象执行。

答案 1 :(得分:0)

将方法设为类方法(使用+ (void) MyMethod: (int)myParameter声明)并从您的应用委托中调用它,如下所示:[MyOtherViewController MyMethod: myParameter]

答案 2 :(得分:0)

这是从AppDelegate.m调用checkAppTheme方法:

[(AppDelegate *)[[UIApplication sharedApplication] delegate] checkAppTheme];

不要错过将(checkAppTheme)更改为AppDelegate.m中的方法

祝你好运!