【问题标题】:Making one view controller listen to another让一个视图控制器监听另一个
【发布时间】:2013-12-26 11:05:31
【问题描述】:

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

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

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

有没有办法做到这一点?

【问题讨论】:

  • 为什么要和委托人一起去?
  • 抱歉你问什么?
  • 或使用通知。让 SecondVC 在 firstVC 触发它时监听通知。
  • 如果你想通知多个视图控制器,你可以使用 NSNotification 其他明智的委托更好。

标签: ios objective-c cocoa-touch oop


【解决方案1】:

当有多个接收者时,使用通知。我们只能设置一个委托。

何时使用 NSNotificationCenter 清单:

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

何时使用代表清单:

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

这就是你需要的
Notification or Delegate
link 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多