Swift UISplitViewController 具有用于详细视图的多个故事板
Swift UISplitViewController with multiple storyboards for Detail View
几天来我一直在为这个问题苦苦挣扎,但无法让它发挥作用。阅读多个 SO 帖子 (, this, this, this, this and this)。问了我的朋友Google,帮助理解了问题,但还没有解决。
在我的 iOS 应用程序(Swift2 和 XCode7)的第一个版本中,我使用 UITableViewController 和 UINavigationViewController 从不同的 UIStoryboard 加载新内容。这一切都很好。对于这个应用程序的第二个版本,我想实现一个 UISplitViewController,现在我收到错误:
*** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'adding a root view controller as a child of view controller:
我理解提示,但无法以纵向和横向模式下的方式解决它。此外,我的解决方案并没有在横向上使用 UINavigationController。
我创建了一个测试项目来跟踪这个错误,希望能解决它。
这是产生错误的代码:
let storyboard = UIStoryboard(name: "ThirdScreen", bundle: nil)
let controller = storyboard.instantiateInitialViewController() as! ThirdDetailViewController
controller.title = "Miracle!"
splitViewController?.showDetailViewController(controller, sender: nil)
这个测试项目的完整代码是available from GitHub。
我怎样才能使这个工作?
非常感谢!
我找到了一个解决方案,诀窍是删除 segue 并使用这样的故事板参考:
出于测试和教学目的,我创建了一个完整的测试项目available from GitHub。这演示了对详细视图使用多个故事板。
11 月 28 日更新:此解决方案有效但需要 iOS 9. 完全可以使用另一个 UIViewController 作为 DetailViewController(意味着可以使用模板),只要您删除 segue,实现 tableView: didSelectRowAtIndexPath
并使用示例中的代码。在后一种情况下,它也适用于 iOS 8.
几天来我一直在为这个问题苦苦挣扎,但无法让它发挥作用。阅读多个 SO 帖子 (
在我的 iOS 应用程序(Swift2 和 XCode7)的第一个版本中,我使用 UITableViewController 和 UINavigationViewController 从不同的 UIStoryboard 加载新内容。这一切都很好。对于这个应用程序的第二个版本,我想实现一个 UISplitViewController,现在我收到错误:
*** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'adding a root view controller as a child of view controller:
我理解提示,但无法以纵向和横向模式下的方式解决它。此外,我的解决方案并没有在横向上使用 UINavigationController。
我创建了一个测试项目来跟踪这个错误,希望能解决它。
这是产生错误的代码:
let storyboard = UIStoryboard(name: "ThirdScreen", bundle: nil)
let controller = storyboard.instantiateInitialViewController() as! ThirdDetailViewController
controller.title = "Miracle!"
splitViewController?.showDetailViewController(controller, sender: nil)
这个测试项目的完整代码是available from GitHub。
我怎样才能使这个工作?
非常感谢!
我找到了一个解决方案,诀窍是删除 segue 并使用这样的故事板参考:
出于测试和教学目的,我创建了一个完整的测试项目available from GitHub。这演示了对详细视图使用多个故事板。
11 月 28 日更新:此解决方案有效但需要 iOS 9. 完全可以使用另一个 UIViewController 作为 DetailViewController(意味着可以使用模板),只要您删除 segue,实现 tableView: didSelectRowAtIndexPath
并使用示例中的代码。在后一种情况下,它也适用于 iOS 8.