不知道如何在 iOS 上从我的应用委托访问视图对象

Posted

技术标签:

【中文标题】不知道如何在 iOS 上从我的应用委托访问视图对象【英文标题】:Don't know how to access a view object from my app delegate on iOS 【发布时间】:2013-08-06 15:11:19 【问题描述】:

我是 ios 编程的初学者,所以我可能会问一些显而易见的问题。无论如何,我的故事板中有一个UISwitch 正确连接到我的UIViewController 中声明的一个名为mySwitch 的属性。我想知道如何从我的应用程序委托中访问该属性。例如,从内部applicationWillResignActive:

- (void)applicationWillResignActive:(UIApplication *)application

    ??? // don't know how to access the mySwitch property
    if ([mySwitch isOn]) 
        // perform some task
    

我正在寻找的答案可能会满足更普遍的问题“从我的应用代理访问视图对象的正确方法是什么?”我还没有找到答案。非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

您不应该尝试 - 这不是应用程序委托的用途。或者,根据任务,开关的状态应该存储为用户默认值或类似的东西。

如果视图控制器应该完成这项工作,它可以通过观察UIApplicationWillResignActiveNotification 通知来完成这项工作(如果确实需要这样做)。

如果应用程序委托应该完成这项工作,那么视图控制器应该在开关更改时更新NSUserDefaults 中的值。

【讨论】:

任务是在应用程序离开活动状态时将一些视图对象的状态(一对UILabels 和一个UIDatePicker)保存在NSUserDefaults 中,并在以后恢复它们(当开关设置为 On 表示应保存屏幕状态)。我想它应该由视图控制器来完成,对吧? 是的,视图控制器。如果您在它们更改而不是应用退出活动时保存它们,则可能不会产生真正的开销。 谢谢。只是为了记录,我在这里找到了实现观察适当通知的代码:***.com/questions/9011868/…

以上是关于不知道如何在 iOS 上从我的应用委托访问视图对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在加速时从我的视图控制器外包视图更改操作?

如何在 Android 上从我的应用程序启动 URL?

如何在 Elastic beanstalk 上从我的 PHP 按需运行 python 脚本?

是否可以在 iOS 7 上从我的应用程序中禁用推送通知声音?

iOS - Facebook 单点登录 - 从我的视图控制器

如何在 Vista 和 Windows 7 上从我的应用程序启动屏幕键盘