1

我刚刚创建了一个自定义 UIViewController,其中包含一些用户操作,例如触摸。我想处理 parentObject 中的用户交互。换句话说,创建 ViewController 的那个。

在其他语言中,我习惯于使用向上推送的事件。所以我的父对象会在 ViewController 对象的引用上有某种监听器,它可以对它做出反应。

Objective C 将如何处理这种类型的交互?

4

3 回答 3

3

这可以通过 1) 响应者链、2) 通知和 3) 委托来完成。

  1. 所有的 UI 对象都形成了响应者链,从当前聚焦的元素开始,然后是父视图,以此类推,通常直到应用程序对象。通过向 nib 中的特殊 First Responder 对象发送操作,您将把它扔到响应者链中,直到有人处理它。您可以使用这种机制来触发事件,而无需知道谁以及何时处理它们。这类似于 HTML 事件模型。

  2. NSNotificationCenter 发送的通知可以被任意数量的监听器接收。这是与例如 C# 事件最接近的模拟。

  3. 委托是向单个对象发送事件的最简单机制。该类声明delegate了可以分配给任何对象的弱属性named,以及该对象应该实现的协议。许多类使用这种方法;主要问题是您不能以这种方式拥有多个听众。

于 2012-06-27T14:03:43.673 回答
0

听起来您需要实现一个委托协议,这将允许您的“子”视图控制器与它的“父”进行通信

请参阅http://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

于 2012-06-27T14:04:41.477 回答
0

您应该查看委托/委托以了解两个视图控制器之间的交互。你需要先了解它是如何工作的。

https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

于 2012-06-27T14:03:06.617 回答