获取对 UIApplication 委托的引用

Posted

技术标签:

【中文标题】获取对 UIApplication 委托的引用【英文标题】:Getting a reference to the UIApplication delegate 【发布时间】:2009-07-26 09:33:05 【问题描述】:

我正在编写我的第一个 iPhone 应用程序,但在切换视图时遇到了问题。我在AppDelegateUIApplicationDelegate 的一个实例)中有 2 个视图和对每个视图的引用。我在applicationDidFinishLaunching 中创建了这两个实例并立即显示第一个视图。这工作正常。

问题是对另一个视图的引用在 AppDelegate 中,我不知道如何获取对它的引用,因此我可以切换到另一个视图。有没有办法获得对主要 UIApplicationUIApplicationDelegate 对象的引用?

【问题讨论】:

【参考方案1】:

是的,UIApplication 是一个单例,并且使用 Objective-C 的普通单例模式:

[UIApplication sharedApplication];

您可以直接从中获取您的委托类:

MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

【讨论】:

可能很明显但值得注意的是MyApplicationDelegate是符合UIApplicationDelegate协议的类名,很多情况下是AppDelegate跨度> 我正在尝试此操作,但出现错误。 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 'sharedApplication' 不可用:在 ios 上不可用(应用程序扩展) - 在适当的情况下使用基于视图控制器的解决方案。【参考方案2】:

用途:

[[UIApplication sharedApplication] delegate];

【讨论】:

以上是关于获取对 UIApplication 委托的引用的主要内容,如果未能解决你的问题,请参考以下文章

UIApplication 的委托属性

iOS开发UI篇—程序启动原理和UIApplication

获取视图控制器引用

- 必须仅从主线程调用[UIApplication委托]

如何在 Xcode 7 的 UI 测试中获取对 TextField 的引用

如何在 Kendo UI TabStrip 中获取对当前选定选项卡的引用?