【发布时间】:2014-12-31 21:07:07
【问题描述】:
我有一个 Master-Detail iOS 应用程序,由标准 XCode 模板和故事板构建而成。当用户单击 Master 的 UITableView 中的“设置”项时,我需要在大多数项目上显示一个带有浏览器的视图,以及一个设置表单(使用 FXForms)。
我在 iPhone 中找到了一种方法,但在 iPad 中找不到。在 iPhone 故事板中,我创建了另一个视图控制器,并从 Master 到新的视图控制器进行了另一个 segue 连接。然后我在didSelectRowAtIndexPath中执行以下操作
if(indexPath.section == 0 && indexPath.row == 2) // settings
[self performSegueWithIdentifier:@"showSettings" sender:self];
else
[self performSegueWithIdentifier:@"showDetail" sender:self];
当我点击设置时,设置视图就会出现。来回导航也可以。
然而,在 iPad 中,detailViewController 似乎一直都在,在 SplitViewController 的右侧。如何修改情节提要和/或代码以将默认视图切换到设置,然后再次切换回来?
我还发现 XCode 的默认模板为 iPad 故事板创建了“关系”序列,这是 iPhone 故事板中不存在的类型,并且不能像我在 iPhone 案例中那样命名为“showSettings”或“showDetail”。
【问题讨论】:
-
您可以选择为两者使用相同的故事板吗?您根本不想要 SplitView,还是只是想替换 SplitView 而不是 SplitView 的一部分?
-
XCode 在标准的 Master-Detail 示例中为 iPhone 和 iPad 创建了两个不同的故事板。我看不到 iPhone 共享相同故事板的方法,因为 iPhone 中的 Master-Detail 就像从一个全屏视图切换到另一个,而 iPad 使用类似“侧边栏”的 Master。在 iPad 的情况下,我想找到一种方法来替换 SplitView 的一部分。
-
使用 XCode 6,您可以在 iPhone 和 iPad 上使用单个 Storyboard,如果您以 iOS8 为目标,您甚至可以在 iPhone 和 iPad 上使用 UISplitViewController。
-
@SachinPalewar - 如果 UISplitViewController 用于 iPhone,它可能不再是 Master-Detail。我将通过替换 detailViewController 进行更多测试,并在问题中提供解决方案。谢谢。
-
我还在swiftwala.com/multiple-detail-views做了一个Multiple-Detail样本你可以去看看。
标签: ipad uitableview uistoryboard uisplitviewcontroller uistoryboardsegue