Ios 在Swift中不是初始值的主详细视图
我是斯威夫特的新手 我想建立一个主细节视图,它不是应用程序的首字母。当我在主细节视图之前设置其他视图时,Xcode使用主细节应用程序生成的AppDelegate.swift就会崩溃 以下是AppDelegate.swift的代码:Ios 在Swift中不是初始值的主详细视图,ios,swift,appdelegate,master-detail,Ios,Swift,Appdelegate,Master Detail,我是斯威夫特的新手 我想建立一个主细节视图,它不是应用程序的首字母。当我在主细节视图之前设置其他视图时,Xcode使用主细节应用程序生成的AppDelegate.swift就会崩溃 以下是AppDelegate.swift的代码: func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
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)
还有我的主故事板:
谢谢你的帮助 您的初始视图控制器是一个
UIViewController
,但在应用程序(应用程序:,使用选项:)的开始部分,您的行为仍然像屏幕上的第一个视图是一个UISplitViewController
(请参见let splitViewController=self.window!.rootViewController as!UISplitViewController
)
为了使不同的视图成为初始视图控制器,您需要适当地更新该代码,以首先处理不同的视图控制器。这是正常的,因为您试图在此行中将UIViewController
强制转换为UIPlitViewController
:
let splitViewController = self.window!.rootViewController as! UISplitViewController
您必须将分割设置为初始视图控制器,或者更改代码并将根作为普通UIViewController处理。我也有同样的问题。我认为答案是,如果您打算使用视图控制器而不是分割视图控制器启动故事板,则选择初始模板进行设置项目应该是单视图应用程序,而不是主细节应用程序。是的,我知道为什么会这样,但我只是不知道如何更新…:(取决于你正在尝试做什么。我建议你从评论开始。然后,当应用程序中的事情无法进一步发挥作用时,你可以研究这些具体问题,并在陷入困境时提出有针对性的问题。这听起来有点像你刚刚开始,并试图快速跳入深层。直到你明白了什么你粘贴的代码并不想变得太聪明。是的,我知道为什么会这样,但我只是不知道如何更改代码…:(你想做什么?你可以从应用程序(application:UIApplication,didfishlaunchingwithoptions launchOptions:[NSObject:AnyObject]?)中删除整个代码)->Bool
方法,只保留返回true
,应用程序应该可以正常工作并加载初始视图控制器