繁体   English   中英

SplitViewController不起作用(Swift)

[英]SplitViewController not work (Swift)

我正在尝试制作一个支持SplitViewController的应用程序。

但是我的应用程序在启动时崩溃。

我怎样才能解决这个问题?

MenuViewController- > ViewController- > DetailViewController

AppDelegate.swift

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    if UIDevice.current.userInterfaceIdiom == .pad {
        self.window = UIWindow(frame: UIScreen.main.bounds)
        self.window!.backgroundColor = UIColor.white
        let splitViewController =  UISplitViewController()
        let menuViewController = MenuViewController()
        let homeViewController = ViewController()
        let secondViewController = DetailViewController()
        let menuNavigationController = UINavigationController(rootViewController:menuViewController)
        let homeNavigationController = UINavigationController(rootViewController:homeViewController)
        let secondNavigationController = UINavigationController(rootViewController:secondViewController)
        splitViewController.viewControllers = [menuNavigationController,homeNavigationController,secondNavigationController]
        self.window!.rootViewController = splitViewController
        self.window!.makeKeyAndVisible()
        return true
    } else {
    }
    return true
}

错误:(示例)-MenuViewController

    override func viewDidLoad() {
    super.viewDidLoad()
    let isDarkMode = UserDefaults.standard.bool(forKey: "isDarkMode")
    if isDarkMode == true {
        self.tableView.backgroundColor = UIColor(red: 37/255, green: 38/255, blue: 39/255, alpha: 1)
    } else {
        self.tableView.backgroundColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1)
    }
    tableView.tableFooterView = UIView(frame: CGRect.zero)

我的故事板:

您的问题是您使用情节提要设计视图控制器,但是在有效规避情节提要的同时用代码创建它们。 之所以会发生这种特殊错误,是因为情节tableView负责创建tableView ,但是现在,由于您规避了情节tableView ,因此它为nil

您有两种选择:

  1. 在情节splitViewController中创建splitViewController并将其用作应用程序的初始视图控制器(并在appDelegate中将splitViewController的程序化创建删除)。

  2. 从情节提要中获取那些视图控制器,例如:

     let menuViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "menuController") 

    在这种情况下,我假设情节提要名称为"Main" ,并且您将MenuViewController的情节"menuController"标识符设置为"menuController" -注意,viewController的类( MenuViewController )与viewController的情节提要标识符不同情况下,我使用了““ menuController”“):

在此处输入图片说明

对您在情节提要中创建的所有那些视图控制器执行相同的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM