我是Swift的新手。
我想构建一个不是应用程序首字母的Master-detail视图。当我在Master-detail视图之前设置其他视图时,Xcode使用Master-detail Application生成的AppDelegate.swift会崩溃。
这是AppDelegate.swift的代码:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
let splitViewController = self.window!.rootViewController as! UISplitViewController
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()
splitViewController.delegate = self
let masterNavigationController = splitViewController.viewControllers[0] as! UINavigationController
let controller = masterNavigationController.topViewController as! MasterViewController
controller.managedObjectContext = self.managedObjectContext
return true
}
我收到以下错误:
Could not cast value of type 'UIViewController' (0x11079e418) to 'UISplitViewController' (0x1107a8eb8).
(lldb)
我的Main.storyboard:
感谢您的帮助!
答案 0 :(得分:0)
您的初始视图控制器是UIViewController
,但在application(application:, didFinishLaunchingWithOptions:)
的开头,您仍然表现为屏幕上的第一个视图是UISplitViewController
(请参阅let splitViewController = self.window!.rootViewController as! UISplitViewController
)。
为了让不同的视图成为初始视图控制器,您需要适当地更新该代码,以便首先处理不同的视图控制器。
答案 1 :(得分:0)
这是正常的,因为您试图在此行中将UIViewController
转换为UISplitViewController
:
let splitViewController = self.window!.rootViewController as! UISplitViewController
您必须将拆分设置为初始视图控制器,或者更改代码并将root作为普通UIViewController处理。