【问题标题】:Don't know how to access a view object from my app delegate on iOS不知道如何在 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
    }
}

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

【问题讨论】:

    标签: ios uiviewcontroller delegates uiapplicationdelegate


    【解决方案1】:

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

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

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

    【讨论】:

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