2017-02-20 95 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你好。你在哪個馬特諾伊堡看到這種治療? –

相關問題