无法从编程创建的UINavigationController推送

时间:2017-04-14 11:57:45

标签: swift3 uinavigationcontroller

在使用Xcode 8.3和iOS 10.3的Swift 3项目中,我得到了一个推送的导航控制器。该应用程序使用导航控制器运行,直到我尝试使用它来推送。一直有效,直到导致应用程序崩溃的最后一行fatal error: unexpectedly found nil while unwrapping an Optional value。我不想使用故事板,这个问题的关键是如何在没有故事板的情况下完成这项任务。

App委托代码

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        window = UIWindow(frame: UIScreen.main.bounds)

        window?.makeKeyAndVisible()

        window?.rootViewController = UINavigationController(rootViewController: MainViewController())

}

查看控制器:

import UIKit

class MainViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .white

        let navController = navigationController

        let myProfileViewController = MyProfileViewController()

        navController!.pushViewController(myProfileViewController, animated: true)

    }
}        

3 个答案:

答案 0 :(得分:2)

移动

let navController = navigationController
let myProfileViewController = MyProfileViewController()

navController!.pushViewController(myProfileViewController, animated: true)

viewDidLoadviewDidAppear

viewDidLoad中没有设置父导航控制器,您不应该从那里开始制作动画。

答案 1 :(得分:0)

您可以在故事板中添加导航控制器, 在Storyboard中单击MainViewController&从编辑菜单中添加导航控制器&通过导航控制器推送如下代码。

  let vc = self.storyboard?.instantiateViewController(withIdentifier: "MyProfileViewController") as! MyProfileViewController
    self.navigationController?.pushViewController(vc, animated: true)

确保故事板标识符正确无误。 &安培;从AppDelegate类中删除导航控制器代码。

答案 2 :(得分:0)

首先像这样给你的导航控制器命名 enter image description here

然后在你的代码中初始化它就像这样 var_dump($statement);