2017-02-20 92 views
1

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

该流程将是MainMenuViewController - > SettingMainTableViewController - > SettingDetailViewController,它将显示为一个分裂如果在iPad上,而不是如果iPhone分裂。这有可能实现,我将如何去做呢?

current setup

回答

0

没有将其设置为rootViewController,您可以在您使用其他UIViewController S也是一样的方式来使用它。您可以以模态方式呈现,甚至可以将其推送到导航堆栈。下面给出一个例子:

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) 

让我知道如果您有任何疑问

+0

感谢您的回复。如果我在viewDidAppear中添加此代码,那么它只显示红色背景视图控制器,如果该设备是一个iPad和蓝色视图控制器,如果该设备是一个iPhone,但从未将它们都显示为分割视图。 –

+0

@ R.Ham,我会在几分钟内回复你在这个 – KrishnaCA

+0

@ R.Ham上,为了让它在storyboard中像splitViewController一样运行,需要做一些修改。我会改进我的编辑来回答他们 – KrishnaCA

0

我更喜欢使用“容器视图控制器”的技术(谷歌它)的根视图控制器。该视图控制器在正常的应用程序视图控制器层次结构和设置拆分视图控制器之间转换。您可以使用各种转换从一个切换到另一个。这个解决方案的一个很好的属性是,当它的运行 - 只要切换一次时,您只需将内存专用于设置,即可释放视图控制器。

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

+0

我目前在我的应用程序中使用容器视图。你能否进一步解释一下,或者提供一些示例代码来说明它的工作原理?谢谢 –

+0

@ R.Ham查看上面编辑 –

+0

@David H你好。你在哪个马特诺伊堡看到这种治疗? –

相关问题