如何在ViewController中访问委托对象

时间:2011-12-14 19:54:24

标签: iphone ios uiviewcontroller superview

我正在尝试让我的AppDelegate实例可以访问我拥有的每个ViewController中的所有方法。如果我尝试用其他类变量声明它,我得到Initializer Element is not a compile-time constant。如果我在ViewController中的方法中声明它,但我能够使用它。我试图将整数和浮点数保存到我在AppDelegate中设置的属性(我知道这是一个很大的禁令,但这是一个介绍性课程的项目,我不会期望太高级,特别是因为我们所有的一切迄今为止所做的并不符合MVC范例。该应用程序使用工具栏在视图之间切换,使用应用程序的ViewController将其他ViewControllers加载为子视图。我打算在每个视图控制器的ViewDidUnload方法中放置AppDelegate声明和更新语句,但是我不确定每次切换时都会卸载视图(通过从SuperView中删除当前视图并加载它们来切换它们)新的一个作为索引0的子视图)。当前没有被查看的视图会发生什么?有没有一种方法可以检测到我可以实现AppDelegate声明并更新到?

我想理想情况下我希望能够在我的ViewControllers中的任何方法中访问AppDelegate对象,因为我有大量的数量在整个更新,并且希望在AppDelegates值中更新这些数量发生了,因为我不确定从SuperView中清除View后会发生什么

先谢谢大家

1 个答案:

答案 0 :(得分:2)

您可以从应用程序的任何位置通过[[UIApplication sharedApplication] delegate]访问您的应用代表。

你应该从不自己实例化对象的另一个副本。系统会在启动时为您执行此操作。

对于检测更改,您可以覆盖viewDidDisappear UIViewController方法。 (你是对的 - 一般来说,切换时不会卸载它们,并且不会调用viewDidUnload