2017-10-19 75 views
-1

如果任何人對分割視圖控制器有豐富的經驗並且能夠幫助我,那將是一個很好的幫助。 我有一個項目,開始於登錄屏幕,後面跟着一個調用API來獲取結果的搜索屏幕。搜索屏幕從API調用中獲得結果後,我想將它們傳遞給splitviewcontroller進行顯示。基本上來說,對於具有table view的splitviewcontroller的master。那麼如何做到這一點?我沒有看到如何使用performsegue,當從splitviewcontroller到主控的segue沒有任何標識符? 那麼是否有可能使用splitviewcontroller作爲第三或第四個屏幕? 有沒有其他方法可以做到這一點?iOS Swift 4 - 如何將數據傳遞給splitviewcontrollers主

謝謝。

回答

0

每個UIViewController有一個屬性稱爲splitViewController。這是一個optional的值,如果您使用的是UISplitViewController,則該值可能是nilsplitViewController屬性將允許您訪問分割視圖控制器嵌入的視圖控制器。

UISplitViewController s有兩個主要組件,主視圖控制器和詳細視圖控制器。在iPad上,主人是位於屏幕左側並佔用最少空間的人,並且將佔用大面積的右側。在iPhone上,兩者將在導航堆棧中彼此重疊,並且兩者將佔據整個屏幕。

這是如何從主站訪問細節:

if let splitVC = self.splitViewController, let detailVC = splitVC.viewControllers[1] { 
    detailVC.doSomething() 
} 

這是如何從細節訪問主:

if let splitVC = self.splitViewController, let masterVC = splitVC.viewControllers[0] { 
    masterVC.doSomething() 
} 

請記住,您可以使用UINavigationControllerUITabBarController在你的故事板中,可以嵌入主或細節。在這種情況下,您可以做同樣的事情,但將這些視圖控制器作爲UINavigationControllerUITabBarController,並在其中鑽取以檢索真正的主控和細節。

+0

感謝您的回覆。我會玩這個屬性,看看它是否允許我訪問主傳遞一些數據,在我的情況下是API返回的對象數組。嘗試幾件事後我會更新回來。當我搜索了一些陳舊的帖子時,證明這是不可能的。分割視圖控制器(主控和細節)必須是初始/根視圖控制器。我不明白爲什麼蘋果限制這樣的事情,如果設計明智的話,按照這個順序設計故事板/屏幕是有意義的。 – user8637139

+0

那麼你能做到嗎? –

+0

我將在本週末嘗試。會讓你知道。謝謝。 – user8637139