2014-12-07 18 views
0

我正試圖將我現有的iOS應用程序轉換爲具有主視圖的主細節視圖。我在Xcode中創建了一個新的Master Detail項目來充當模板。但是,儘管故事板文件中具有相同的AppDelegate.swift和幾乎相同的故事板文件,但我遇到了window.rootViewController不是故事板中定義的initialViewController導致的異常。window.rootViewController怎麼可能不是initialViewController?

的Info.plist

<key>UIMainStoryboardFile</key> 
<string>Main</string> 

Main.storyboard

<document ... initialViewController="Z2E-r9-vU1"> 
    <!-- ... --> 
    <!--SplitViewTitle--> 
    <scene sceneID="dlH-f9-ql3"> 
    <objects> 
     <splitViewController title="SplitViewTitle" id="Z2E-r9-vU1" sceneMemberID="viewController"> 

異常這裏發生在AppDelegate.swift

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate { 
    var window: UIWindow? 
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    let splitViewController = self.window!.rootViewController as UISplitViewController 

在由Xcode創建的默認Master Detail項目中,self.window!.rootViewController將是UISplitViewController,但在我的應用程序中,它將是UINavigationController,特別是主視圖的導航控制器。

這怎麼可能?從我對rootViewController的理解中,它應該在發佈時設置爲。引用一些官方documentation

在啓動時的iOS:

  • 實例化一個窗口。
  • 加載主故事板並實例化其初始視圖控制器。
  • 將新的視圖控制器分配給窗口的rootViewController屬性,然後使窗口可見。

更新:

這是開始看起來像在Xcode的錯誤。我只是通過創建一個新的主細節項目來再現確切的異常,將部署目標設置爲7.1並在iPhone 5(7.1)模擬器上運行它。它可以在iPhone 5(8.1)模擬器上正常工作。

更新2: 我一直在使用Xcode Version 6.1 (6A1052c)。我剛剛升級到最新版本,Version 6.1.1 (6A2008a),但它不能解決這個容易重現的問題。我將向Apple提交一份錯誤報告,然後繼續。

回答

1

在8.0之前的iOS版本中,您無法使用SplitViewController for iPhone - 僅適用於iPad。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISplitViewController_class/index.html

In iOS 8 and later, you can use the UISplitViewController class on all iOS devices; in previous versions of iOS, the class is available only on iPad.

+0

謝謝,但我的問題是 「爲什麼是不是RootViewController的?」因爲我已經將它設置爲initialViewController。我寧願不必爲某些應該是默認行爲的程序修復程序。 – 2014-12-08 16:54:00

+0

因此,當您在調試中檢查rootViewController時,它不是SplitViewController類嗎? – 2014-12-09 12:24:04

+0

這是正確的,至少對於iPhone 5(7.1)的情況。 – 2014-12-09 22:24:51