让一个视图控制器听另一个

时间:2013-12-26 11:05:31

标签: ios objective-c cocoa-touch oop

所以我有两个视图控制器。其中一个用于位置搜索的自动完成功能,它只需让用户使用google places api获取地址即可。另一个允许用户进行关键字搜索并实际在表格视图中显示结果(使用自定义的uitablecell)。

我想这样做,以便我可以从一个视图控制器获取地址,执行搜索并使用在另一个控制器中绘制表的代码来绘制我的结果。

换句话说,我正在寻找一种方法让一个视图控制器触发一条消息而另一个视图控制器来监听。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

如果有多个接收器,请使用通知。我们只能设置一个代表。

何时使用NSNotificationCenter核对表:

您需要一对多的关系。您需要很少的观察者来对特定通知做出反应。示例:可达性通知。当您的网络可达性发生变化时,例如wi-fi变得不可用,订阅此类通知的所有对象都将接收它们并可以相应地处理。 通过设计,您可以鼓励松耦合。在上面的示例中,发送“可更改性”通知的生产者对此通知的可能观察者一无所知。可能很少或没有。对于观察者来说也是如此,他们不需要知道关于此通知的生成者的任何信息。

何时使用代表清单:

代表应始终仅用于一对一的关系。 如果您鼓励紧密耦合,请使用代表。请记住,通过使用委托,您可以在对象之间创建更多的相互依赖性,并与信息流进行更多协调。 代表的一个很好的例子是UITableView。 UITable ViewDelegate鼓励更多的信息流,并在视图控制器和表视图之间创建更多的相互依赖性。

这是你需要的 Notification or Delegate
link 2