【问题标题】:iOS: How to notify the appDelegate from a UIViewControlleriOS:如何从 UIViewController 通知 appDelegate
【发布时间】:2011-06-08 20:25:32
【问题描述】:

关于如何在我的 iOS 应用程序中传递信息的简单问题。

appDelegate 有一个变量 myVar。

我有一个带有切换器视图的 UIViewController。当切换器切换时,我需要为 myVar 设置另一个值。

由于 UIViewController 不应该知道 appDelegate 的接口,我如何通知它有关开关并更新其变量?

注意。如果您要回答“只是发送消息”,请告诉我如何实现它,因为不清楚。

谢谢

【问题讨论】:

    标签: ios


    【解决方案1】:

    http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW1
    你能做类似于键盘通知的事情吗?

    想法是实现向所有注册的监听器发送通知的自定义开关;注册您认为应该收到通知的任何对象。

    【讨论】:

    • @KKK4SO 那么,我应该去找通知和监听器吗?任何人都可以建议我使用它的 API 吗?我只是想知道在不破坏 OO 设计的情况下做这些事情的常用方法是什么
    • 我提供的链接可以让您全面了解通知的工作原理(当 SIP 显示/隐藏时)。可以为您的自定义控件实现一些类似的东西。告诉我是否有一些具体的事情你不清楚这种方法
    • @KKK4SO 我明白了。好吧,我现在实际上正在阅读通知章节,并且我已经看到有一些特定的通知类,所以我想我会使用它们。不过,我想知道这种东西(用户界面事件)是否有委托。
    • (这样我就可以使用委托而不是实现自己的通知
    • AFAIK,自定义控件没有默认通知。我怀疑是否有任何,即使是默认的 UIControls(除了 textfeild 和 textview)。我相信您正在以 Cocoa 方式使用适当的 OO 设计来做到这一点:)
    【解决方案2】:

    好吧,您可以发送消息。您会收到有关它的警告,但它会起作用。

    在发现您不需要应用范围的状态后,NSNotifications 是一个不错的选择。

    【讨论】:

    • 这正是我发布这个问题的原因。我想要最好的 OO 设计选择。我猜调用 appDelegate 的方法不好。
    • 我也在思考应用范围状态的最佳选择。我过去曾为此使用过单例对象,但有些人,也许是正确的,对此皱眉。
    • 好吧,我不一定需要应用程序范围的状态。我有 2 个 UIViewControllers,第二个在第一个中初始化。当 switch 在第二个视图中切换时,应该通知第一个 UIViewController。
    • 所以,第一个ViewController 知道第二个。但反之亦然。我不好从 secondViewController 中引用第一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2012-06-11
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多