2016-10-04 144 views
0

我需要以模態方式呈現UISplitViewController(在iPhone和iPad上),它應該有一個透明背景(我將添加模糊視圖)。 我在呈現UIViewController時能夠做到這一點,但它不能與分割視圖控制器一起使用。 我的拆分視圖控制器有2個導航控制器。具有透明背景的Modal UISplitViewController

我的結果是主視圖控制器有黑色背景。

感謝您的幫助。

回答

0

是你的UISplitViewController的根視圖控制器?如果不是,它會表現出奇怪的行爲。每蘋果:

」 ......雖然可以安裝一個拆分視圖控制器在一些其它容器視圖控制器一個孩子,是不是在大多數情況下,建議做拆分視圖控制器。 「

我已經使用了這個(從詳細視圖控制器調用,使用分離視圖控制器與兩個導航控制器。)在這一點上,我想重置導航堆棧:

let firstVC = self.storyboard?.instantiateViewController(withIdentifier: "FirstViewController") as! FirstViewController 
let secondVC = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController 
    // Get a reference the the Master View nav controller 
let masterNav = self.splitViewController!.viewControllers[0] as! UINavigationController 
    // Set desired VC's as nav stack RootViewControllers   
self.navigationController?.setViewControllers([matchVC], animated: true) 
masterNav.setViewControllers([masterMatchTableView], animated: true) 

如果要維護導航堆棧,則可以在兩個導航控制器上調用.pushViewController

如果你仍然在研究這個,發佈一些代碼,我很樂意看看它。

編輯:

所以,你不能模態呈現拆分視圖控制器: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/SplitViewControllers.html

分割視圖控制器必須始終爲您創建任何接口的根。換句話說,您必須始終將UISplitViewController對象的視圖安裝爲應用程序窗口的根視圖。然後,分割視圖界面的窗格可能包含導航控制器,選項卡欄控制器或實現界面所需的任何其他類型的視圖控制器。 不能以模態方式顯示分割視圖控制器。

我在上面發佈的代碼片段將同時顯示主視圖和詳細視圖。或者,您可以提供一個新的VC作爲詳細視圖,並將UISplitViewController.preferredDisplayMode = .primaryHidden設置爲模態呈現單個VC。

+0

有沒有辦法以透明背景呈現SplitViewController(無論是通過模式還是通過推送)?我需要主VC和細節VC是透明的。 – Oded