0

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

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

提前谢谢大家

4

1 回答 1

2

[[UIApplication sharedApplication] delegate]您可以从应用程序中的任何位置访问您的应用程序委托。

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

至于检测变化,你可以重写viewDidDisappear. UIViewController(你是对的——一般来说,它们在切换时不会被卸载,viewDidUnload也不会被调用)

于 2011-12-14T20:00:19.323 回答