iOS:如何从 UIViewController 通知 appDelegate
Posted
技术标签:
【中文标题】iOS:如何从 UIViewController 通知 appDelegate【英文标题】:iOS: How to notify the appDelegate from a UIViewController 【发布时间】:2011-06-08 20:25:32 【问题描述】:关于如何在我的 ios 应用程序中传递信息的简单问题。
appDelegate 有一个变量 myVar。
我有一个带有切换器视图的 UIViewController。当切换器切换时,我需要为 myVar 设置另一个值。
由于 UIViewController 不应该知道 appDelegate 的接口,我如何通知它有关开关并更新其变量?
注意。如果您要回答“只是发送消息”,请告诉我如何实现它,因为不清楚。
谢谢
【问题讨论】:
【参考方案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】:好吧,您可以发送消息。您会收到有关它的警告,但它会起作用。
在发现您不需要应用范围的状态后,NSNotification
s 是一个不错的选择。
【讨论】:
这正是我发布这个问题的原因。我想要最好的 OO 设计选择。我猜调用 appDelegate 的方法不好。 我也在思考应用范围状态的最佳选择。我过去曾为此使用过单例对象,但有些人,也许是正确的,对此皱眉。 好吧,我不一定需要应用程序范围的状态。我有 2 个 UIViewControllers,第二个在第一个中初始化。当 switch 在第二个视图中切换时,应该通知第一个 UIViewController。 所以,第一个ViewController 知道第二个。但反之亦然。我不好从 secondViewController 中引用第一个。以上是关于iOS:如何从 UIViewController 通知 appDelegate的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中以编程方式从基本 UIViewController 向我的所有视图控制器添加视图
IOS 从 AppDelegate 中的 addMessageFromRemoteNotification 显示 UIViewController
如何从 UIView 导航 UIViewController