在使用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)
}
}
答案 0 :(得分:2)
移动
let navController = navigationController
let myProfileViewController = MyProfileViewController()
navController!.pushViewController(myProfileViewController, animated: true)
从viewDidLoad
到viewDidAppear
。
在viewDidLoad
中没有设置父导航控制器,您不应该从那里开始制作动画。
答案 1 :(得分:0)
您可以在故事板中添加导航控制器, 在Storyboard中单击MainViewController&从编辑菜单中添加导航控制器&通过导航控制器推送如下代码。
let vc = self.storyboard?.instantiateViewController(withIdentifier: "MyProfileViewController") as! MyProfileViewController
self.navigationController?.pushViewController(vc, animated: true)
确保故事板标识符正确无误。 &安培;从AppDelegate类中删除导航控制器代码。
答案 2 :(得分:0)