2014-10-31 66 views
4

UISplitViewController肖像在iPhone上總是顯示主頁和詳細的iOS 8UISplitViewController在iPhone上的肖像總是表現出主人和細節的iOS 8

我嘗試繼承UISplitViewController和配置它來顯示主人和細節與此同時。但沒有任何影響。

class APPSplitViewController: UISplitViewController, UISplitViewControllerDelegate { 

    override func viewDidLoad() { 

     super.viewDidLoad() 
     preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible 
     maximumPrimaryColumnWidth = 32.0 
     minimumPrimaryColumnWidth = 32.0 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
} 

如何?

回答

2

UISplitViewController use顯示側由端僅在水平規則環境(新TraitCollection大小)

的拆分視圖控制器確定它的子視圖控制器的基於可用空間的佈置。在橫向常規環境中,分割視圖控制器儘可能地並排呈現其視圖控制器。在水平緊湊的環境中,分割視圖控制器更像導航控制器,最初顯示主視圖控制器並根據需要推送或彈出輔助視圖控制器。您還可以通過爲preferredDisplayMode屬性分配值來要求分屏視圖控制器更喜歡特定的排列方式。

解決方法。 您必須更改SplitViewController的TraitCollection。如何做到這一點:

  • 創建一個ViewController並添加您的SplitViewController作爲一個孩子。
  • 與大小.Regular覆蓋traitCollection爲您的孩子(UISplitViewController)

的ViewController包裝

class TraitOverrideViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    configureSplitVC() 
    } 


    private func configureSplitVC() { 

    let splitVC = self.childViewControllers[0] as UISplitViewController 
    setOverrideTraitCollection(UITraitCollection(horizontalSizeClass: .Regular), forChildViewController: splitVC) 
    } 
} 

在iOS系統中8 UISplitViewController使用Adaptive User Interfaces和TraitCollections以顯示其內容。
它根據視圖的大小和類型顯示不同的樣式。你可以通過我上面解釋的技術來改變。
你可以從WWDC視頻中獲得更多信息約Building Adaptive Apps with UIKit

+0

嗨Konstantin Koval,感謝您的幫助。這是一個很好的答案。我仍然有一個問題。爲什麼我失去了細節觀? – CocoaUser 2014-11-04 11:02:48

+0

嘗試設置primaryColumnWidth – 2014-11-04 11:04:51

+0

或者您必須調用showDetailViewController來爲默認項目提供detailsViewController,例如在索引0處 – 2014-11-04 11:05:47

相關問題