iPad上使用故事板的UISplitViewController?

6
在Xcode中,我如何创建一个简单的iPad应用程序,使用Storyboards,以便每个条目都可以交换DetailView控制器?大多数例子都使用iPhone,或者仅仅更改同一个详细视图控制器中的值。
我想在Interface Builder中从静态TableView Controller(例如3行)创建segues,其中每行将加载不同的游戏详细视图控制器,我将在IB中拖动并设计。目前,当我连接一个视图控制器到一个segue时,它会替换UISplitViewController的导航部分。换句话说,就像我正在遍历一棵树一样,我需要告诉IB我正在一个根节点,并且我应该更改DetailView。

如果您想使用通用故事板解决此问题的Swift + iOS8解决方案,可以查看我的代码 - http://swiftwala.com/multiple-detail-views - Sachin Palewar
3个回答

18

关于segue的良好起点是斯坦福大学CS193p 2011年秋季课程的第6和第7讲。

http://itunes.apple.com/us/itunes-u/ipad-iphone-application-development/id473757255

讲师Paul Hegarty涵盖了所有内容。然而,在课程结束之前,他没有时间回答这个问题。但是,他在文件“Psychologist with Dr Pill.zip”中包含了最终解决方案的源代码。

http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2011-fall

基本上,这个问题所需的所有操作就是从每个UITableCell Ctrl-drag到相应的游戏详细信息视图控制器,然后选择“Replace Segue”。还有一步需要完成,因为默认情况下Xcode认为您要替换主控制器,所以视图控制器会缩小。对于每个segue,选择连接线并在“属性检查器”中更改目标,将其从“Master Split”更改为“Detail Split”。此时,您可以使用弹出窗口进行测试,而无需编写任何代码。

Master Split Destination

Detail Split Destination

Solution


我在使用你的解决方案时遇到了问题。当你这样做时,它会替换详细导航控制器,因此无法调用弹出窗口的返回。 - Keith
你看过斯坦福课程的第七集吗?如果你没有正确设置委托,可能会发生这种情况。 - user568866
实际上,这个例子应该很有帮助:https://github.com/toddwbates/MultipleMasterDetailViews - user568866
哇哦...谢谢你的回答,伙计。它为我解决了问题 :) 非常感谢! - A for Alpha
请注意,如果您正在使用iOS 8自适应segue,则称为“显示详细信息(例如替换)”,无需将目标设置为详细拆分 - 没有“目标”选项。非常好用! - Jordan H

1

0
很难没有图片来描述,但是:将导航控制器作为主控制器。然后使用命名的segue将每个详细视图挂在其下以进行替换。 然后你需要一点代码。 在你的主视图控制器中的didSelectRowAtIndexPath方法中,你需要一个基于indexpath.row的switch语句,并在每行中调用detailview performSegueWithIdentifier:@"the row you want"。

你可以随时在你的回答中添加一张图片 :) 这可能是赢取悬赏的好方法! - Flexo
我添加了一张图片。当我点击“游戏#2”时,我该如何创建到Game 2视图控制器的segue?例如,我可以使用Ctrl拖动UITableViewCells来完成这个过程吗? - user568866

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接