UISplitViewController主/细节通信

时间:2011-11-06 23:31:31

标签: objective-c ios xcode cocoa-touch ipad

我刚刚开始玩UISplitViewController - 我拼凑了各种教程中的一些代码,但是我无法看到如何将数据从Master发送到Detail。我正在创建一个RSS阅读器,只是为了向自己说明它应该如何工作。我已经解析了一个RSS提要并使用UITableView填充了MasterViewController,但是我很难搞清楚如何点击行并在detailViewController中的UIWebView中加载相应的文章。任何提示都表示赞赏。

1 个答案:

答案 0 :(得分:11)

一个好方法是使用代表。这允许一个视图调用另一个视图提供的回调。在这种情况下,详细视图依赖于主存在,因此使回调很好。我会避免让他们直接引用彼此并直接读取彼此的数据。

What exactly does delegate do in xcode ios project?

这是UISplitViewController的教程,它就是这样做的(在master / detail之间委托):

http://www.raywenderlich.com/1040/ipad-for-iphone-developers-101-uisplitview-tutorial

特别是本节:

  

用右手勾选左边

     

玩红娘和勾手的时间   这两个方面在一起。

     

有很多不同的策略   最好的完成这个。在拆分视图应用程序模板中   给左视图控制器一个指向右视图控制器的指针,   并且左视图控制器在右视图上设置属性   选择一行时的控制器。右视图控制器   覆盖属性以在属性为时更新视图   更新。这很好,但我们将采用这种方法   在这里的UISplitViewController类引用中建议 - 使用   与会代表。基本的想法是我们要定义一个协议   单一方法 - “selectedBotChanged。”我们的右手会   实现此方法,我们的左侧将接受委托   有人想知道这个。

另一种方法是拥有一个共享模型 - 有点像带有通知的单例,可以根据通知中的数据触发不同的视图来更新自己,或者根据模型更改查询模型。在有许多视图的应用程序中,这有时会更好,这些视图不依赖于彼此,只是以各种方式冒泡数据(这不是这种情况 - 详细视图依赖于主存在,因此委托就可以了)。 / p>