2015-11-24 113 views
2

我一直在努力解決這個問題幾天,無法讓它工作。閱讀多個SO帖子(thisthis,this,this, thisthis)。問我的朋友谷歌,幫助瞭解問題,但還沒有解決它。Swift UISplitViewController具有多個故事板的詳細視圖

在我的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

我該如何做這項工作?

非常感謝!

回答

4

我找到了解決辦法,關鍵是要去除SEGUE和使用這樣的故事板參考:

storyboard reference

爲了測試和教學目的,我創建了一個完整的測試項目,該項目是available from GitHub。這演示了多個故事板用於詳細視圖。

更新11月28日:這個解決方案的工作原理,但需要iOS 9.只要你刪除Segue,實現tableView: didSelectRowAtIndexPath並使用代碼,完全可以使用另一個UIViewController作爲DetailViewController(意思是模板可以使用)這個例子。在後一種情況下,它也適用於iOS 8.

相關問題