Swift:在不是初始视图控制器的通用应用程序上拆分视图控制器

时间:2017-02-20 13:20:18

标签: ios swift uisplitviewcontroller

我有一个通用应用程序,并且只想为我的设置视图添加拆分视图控制器。这意味着我需要一个拆分视图控制器,它不是初始视图控制器,它将处理SettingMainTableViewController(主设置页面)和SettingDetailViewController(显示各个设置)之间的交互。我在网上看到的所有指南和教程都假设拆分视图控制器是初始视图控制器。

流程将是MainMenuViewController - > SettingMainTableViewController - > SettingDetailViewController,如果在ipad上显示为拆分,如果是iphone则不拆分。这有可能实现吗?我将如何实现呢?

current setup

2 个答案:

答案 0 :(得分:0)

如果不将其设置为rootViewController,您可以像使用其他UIViewController一样使用它。您可以以模态方式呈现或甚至将其推送到导航堆栈。其中一个例子如下:

let rootViewController: UIViewController = UIViewController()
rootViewController.view.backgroundColor = UIColor.red
let navVC: UINavigationController = UINavigationController(rootViewController: rootViewController)

let detailViewController: UIViewController = UIViewController()
detailViewController.view.backgroundColor = UIColor.blue

let splitVC: UISplitViewController = UISplitViewController()
splitVC.viewControllers = [navVC, detailViewController]
self.present(splitVC, animated: true, completion: nil)

如果您有任何疑问,请告诉我

答案 1 :(得分:0)

我喜欢的技术是使用"容器视图控制器" (google it)作为根视图控制器。该视图控制器在普通应用程序视图控制器层次结构和设置拆分视图控制器之间转换您可以使用各种过渡从一个切换到另一个。这个解决方案的一个很好的属性是你只有在设置运行时才为内存设置内存 - 一旦关闭,就可以释放视图控制器。

编辑:您有一个根容器视图。启动时,您只需立即显示视图A(VC-A)。稍后,您决定显示视图B(VC-B)。您创建一个转换,从A到B,然后在最后,您释放视图控制器VC-A。 Matt Neuburg在他的iOS书籍中有很好的待遇 - 这是我从中获得技术的地方。当然,这也包含在其他地方。有趣的是,根容器视图还可以在其视图中显示一些UI!确实有点复杂,但我已经做到了。