2014-01-27 40 views
4

我正在嘗試爲iPad設計一個項目,我想在其中使用分割視圖控制器。我將爲主視圖控制器中的每個單元使用不同的詳細視圖控制器。UISplitViewController - 通過storyboard segues的多個細節視圖控制器

我看到了一個解決方案如何通過這個網站的故事板segues做到這一點。

他基本上將他的每個UITableViewCell鏈接到不同的詳細視圖控制器。但我想知道這是否是一種「穩定」或「好」的方式。我的意思是,它是否比編程更好或穩定?做他的方法會有什麼後果,如果有的話?

這裏是link到我發現

+0

我認爲這是一個好方法。如果您事先知道選項,則可以在Table View中使用靜態單元格,然後在每個Detail View中分別放置不同的單元格。如果您沒有提前選擇,那麼您必須使用Prototype Cells,然後您必須使用需要使用performSeguewithIdentifier方法從代碼觸發的Generic Segues。您可以在這裏找到類似問題的解決方案 - http://swiftwala.com/multiple-detail-views –

+0

[Splitview with multiple detail views using storyboarding。看到一個示例/教程?](http://stackoverflow.com/questions/7993168/splitview-with-multiple-detail-views-using-storyboarding-seen-an-example-tutori) – jrc

回答

3

這是怎樣的一個棘手的的解決方案,即使它是一個令人難以置信的常見情況。

1)一個想法是有一個空的根視圖控制器作爲您的細節,並處理管理下的細節,快速延續到您真正關心的細節視圖,並利用「替換」細節。這應該「技術上」修復左上角的「後退」按鈕,仍然允許您彈出到根目錄,而不是顯示空的控制器。雖然沒有測試過,所以我不確定。

編輯:在Xcode 6中,「替換」segue方便地由一個「show detail」segue處理,它專門用於分割視圖控制器上的這種類型的視圖處理。我建議僅在新項目中使用此方法。 See sample code.

2)另一個想法是在你的故事板中有單獨的導航控制器(一個連接,其餘的都擱淺)。一個用於每個細節視圖類型並在主菜單上點擊將簡單地將詳細視圖的導航控制器交換爲您關心的那個。

代碼類似於這樣在AppDelegate中:

self.detailNavigationController = [self.masterNavigationController.storyboard instantiateViewControllerWithIdentifier:@"MyChosenNavigationControllerStoryboardId"]; 
self.splitViewController.viewControllers = @[self.splitViewController.viewControllers[0], self.detailNavigationController]; 
self.splitViewController.delegate = (id)self.detailNavigationController.topViewController; 

這樣做的缺點第二種方式是,在記憶測試中,它不會出現換一個新的導航控制器在釋放了所有的記憶了的舊的導航控制器正在使用。因此,使用簡單的應用程序很好,但不適合任何複雜的事情。

+0

示例代碼不適用於緊湊寬度的設備:https://github.com/dstarsboy/TMMultiDetailSplitView/issues/2種類的使用分裂視圖控制器的目的失敗。 – lostintranslation

+0

這個問題僅標記爲iPad,問題具體是關於iPad,當您打開示例代碼時,該應用程序不具有通用性,它被鎖定爲iPad應用程序...緊湊型設備與任何要求或回答的內容無關。但是,我只是更新了代碼以在手機上工作,希望它對您有所幫助。 –

相關問題