Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中不是初始值的主详细视图_Ios_Swift_Appdelegate_Master Detail - Fatal编程技术网

Ios 在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 {

我是斯威夫特的新手

我想建立一个主细节视图,它不是应用程序的首字母。当我在主细节视图之前设置其他视图时,Xcode使用主细节应用程序生成的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) 
还有我的主故事板:


谢谢你的帮助

您的初始视图控制器是一个
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
,应用程序应该可以正常工作并加载初始视图控制器