【问题标题】:UISplitViewController on iPad with Storyboards?带有情节提要的 iPad 上的 UISplitViewController?
【发布时间】:2012-02-14 05:38:29
【问题描述】:

在 Xcode 中,如何创建一个使用 Storyboard 的简单 iPad 应用程序,以便为每个条目换出 DetailView 控制器?我见过的大多数示例都使用 iPhone,或者他们只是更改了同一个详细视图控制器中的值。

我想在 Interface Builder 中从静态 TableView 控制器(比如 3 行)创建转场,其中每一行将加载不同的游戏细节视图控制器,我将拖出并在 IB 中设计。目前,当我使用 segue 连接视图控制器时,它会替换 UISplitViewController 的导航部分。换句话说,这就像我正在遍历一棵树,我需要告诉 IB 我在根节点,我应该更改详细视图。

【问题讨论】:

标签: ios ipad xcode-storyboard


【解决方案1】:

斯坦福大学 CS193p 2011 年秋季课程的第 6 和第 7 课是 segues 的一个很好的起点。

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

讲师 Paul Hegarty 涵盖所有内容。然而,在下课之前他没有时间回答这个问题。他确实在文件中包含了最终解决方案的来源:Pill.zip 博士的心理学家。

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

基本上,这个问题需要做的就是从每个 UITableCell 按住 Ctrl 并拖动到相应的游戏细节视图控制器,然后选择 Replace segue。由于默认情况下 Xcode 认为您要替换主控制器,因此视图控制器将缩小,因此还有一步。对于每个segue,选择连接线,然后在属性检查器中将目标从“Master Split”更改为“Detail Split”。至此,你可以用弹窗进行测试,无需编写任何代码。

【讨论】:

  • 我的解决方案有问题。执行此操作时,它会替换详细导航控制器,因此无法回调弹出窗口。
  • 你看过斯坦福班的第 7 集吗?如果您没有正确设置委托,可能会发生这种情况。
  • 其实这个例子应该会有所帮助:github.com/toddwbates/MultipleMasterDetailViews
  • 哇...谢谢这个回答老兄。它为我节省了一天:) 非常感谢
  • 请注意,如果您使用的是 iOS 8 自适应转场,则称为“显示详细信息(例如替换)”,无需将目标设置为详细拆分 - 没有“目标”选项.效果很好!
【解决方案2】:

Apple 提供了一个更通用解决方案的示例代码,用于解决如何根据主视图中选择的内容交换不同的详细视图的问题。 Apple 示例代码通过引入 UISplitViewControllerDelegate 协议的自定义实现来实现这一点:

https://developer.apple.com/library/ios/samplecode/MultipleDetailViews/Introduction/Intro.html

【讨论】:

    【解决方案3】:

    没有图片很难描述,但是:有一个导航控制器作为主控。然后用一个替换的命名segue挂起每个detailview。 然后你需要一些代码。 在 didSelectRowAtIndexPath 中的主视图控制器中,您需要一个基于 indexpath.row 的 switch 语句,并在每一行中调用 detailview performSegueWithIdentifier:@"the row you want"

    【讨论】:

    • 您可以随时在答案中添加图片 :) 可能也是赢得赏金的好方法!
    • 我添加了一张图片。例如,当我单击“Game #2”时,如何创建 Game 2 视图控制器的 segue?我可以用我的 UITableViewCells 中的 Ctrl 拖动 segues 来做到这一点吗?
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2012-12-24
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多