【问题标题】:Xcode iOS: How to communicate with other Controller?Xcode iOS:如何与其他控制器通信?
【发布时间】:2012-07-28 13:57:02
【问题描述】:

我有以下问题,需要一个模式来解决它:

为了简单起见,我有两个视图,MasterViewController 和 PreferencesController,最后一个是第一个的弹出窗口。 PrefController 已将一些方法委托给 MasterController。

但现在我想从 PreferencesController 中捕获 Popover-Event 并通知 MasterController。

最好的方法是什么?我现在也不想在另一个方向使用代表,这似乎是一个很好的解决方案。我考虑过为此创建一个事件,但您可能对这种情况有更好的建议/解决方案。

提前致谢

【问题讨论】:

  • 你的结构中的某些东西并不真正有意义 - 如果 PreferencesController 是一个弹出窗口,为什么 PreferencesController 是 MasterController 的代表?我希望弹出窗口有一个委托属性,以便将信息传递回主控制器,而不是相反。

标签: ios xcode ipad events communication


【解决方案1】:

您可以查看NSNotificationCenter reference guide 也许这可以完成这项工作?它非常适合控制器之间的通信,最好的是它们不必相互了解。否则,您可能必须声明在控制器之间传递数据的协议。

【讨论】:

  • 感谢您的回答,我刚刚实现了 NSNotifacationCenter 但现在我遇到了以下小问题:我的 MasterController 实现了类方法“+ (void)YourSelector:(NSNotification *)notification”。但是因为它是一个类方法,所以我不能调用实例方法,也不能调用这个方法中的任何变量。但是没有这个,整个方法当然没有任何意义。您能否也告诉我,如何管理它才能使用 MasterControl 的实例方法/变量?
  • 首先,像@Stavash sais 一样,如果您的 PreferencesController 是 MasterController 的委托,这似乎有点奇怪。将其设置为相反的方式不会花费您那么长时间,并且这将是视图控制器之间更自然的通信方式。我想这会让你更好地理解这一切。您希望 PreferencesController 成为 MasterController 的子视图,因此它的委托位于 MasterController 中,您可以与 PreferencesController 中的委托进行通信。
  • 稍后如果你想从 MasterController 到 PreferencesController 这也可以通过委托传递。
  • 谢谢,代理是更好的选择 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
相关资源
最近更新 更多