【问题标题】:SplitViewController not work (Swift)SplitViewController 不起作用(Swift)
【发布时间】:2018-03-02 12:48:42
【问题描述】:

我正在尝试制作一个支持 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)

我的故事板:

【问题讨论】:

  • 告诉我们更多关于 ti 崩溃的原因
  • 我收到与表格相关的所有错误 - “线程 1:致命错误:在展开可选值时意外发现 nil”
  • 此错误与您在此处显示的代码无关,也与 splitViewController 无关。您在某处强行解开一个可选项,导致它崩溃.. 显示崩溃的代码
  • @MilanNosáľ 检查我编辑的问题
  • 你在故事板中定义MenuViewController吗?

标签: ios swift xcode ipad uisplitviewcontroller


【解决方案1】:

您的问题是您使用情节提要设计视图控制器,但您在代码中创建它们同时有效地绕过情节提要。发生该特定错误是因为创建 tableView 是情节提要的责任,但现在由于您绕过情节提要,它是 nil

你有两个选择:

  1. 在故事板中创建 splitViewController 并将其用作应用的初始视图控制器(并在 appDelegate 中删除 splitViewController 的编程创建)。

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

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

    在此我假设情节提要名称为"Main",并且您将MenuViewController 的情节提要标识符设置为"menuController" - 请注意,viewController 的类(MenuViewController)不是一回事作为 viewController 的故事板标识符(在我的例子中,我使用了 '"menuController"'):

对您在故事板中创建的所有视图控制器执行相同的操作。

【讨论】:

  • 谢谢))但是我怎样才能用 3 个 VC 处理拆分视图? MenuViewController --> ViewController --> DetailViewController
  • @B2Fq 那是另一个问题
猜你喜欢
  • 1970-01-01
  • 2016-08-26
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多