2016-10-04 100 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