ios - UINAvigationController -> setViewControllers 导致崩溃

标签 ios swift uinavigationcontroller rx-swift rx-cocoa

我遇到了一个非常奇怪的情况 - 调用 method UINAvigationController -> setViewControllers:animated: 导致应用程序崩溃。仅在 iOS 10.3.2 上以及当我在 Release模式下构建应用程序时才会出现这种情况。

我收集了更多详细信息。希望他们能帮助理解发生的事情。

此问题仅出现在 iOS 10.3.2 和 Release模式下。我在 iPhone 10.3.2 上检查过这一点,发布版本失败,但调试工作正常。另外,我在iOS 10.3.2上的AppStore上检查了该应用程序的以前版本,也没有问题。调试和发布版本在所有以前版本的 iOS 上都可以正常工作。

AppStore 中的先前版本是使用旧版本的 Xcode 构建的,现在我使用最新的 Xcode 8.3.2。我猜是系统问题,与iOS和Xcode版本有关。

关于来源,看起来像:

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    ...
    window = UIWindow(frame: UIScreen.main.bounds)
    ....
    let navigationController = UINavigationController(rootViewController: viewController)
    window.rootViewController = navigationController
    window.makeKeyAndVisible()
}

ViewController.swift

override func viewDidLoad() {
    super.viewDidLoad()
    ...
    continueButton.addTarget(self, action: #selector(navigateForward), for: .touchUpInside)
    ...
}

func navigateForward(sender: UIButton!) {
    let nextController = FinalBuilder.viewController()
    navigationController?.setViewControllers([nextController], animated: true)
}

我之前说过,除了一种情况外,它在所有情况下都可以正常工作:)。 UINAvigationController -> setViewControllers:animated: 是标准的 iOS 方法,从 iOS 3.0+ 开始可用,现在不推荐使用。没有黑客或其他东西可以破坏程序流程。这是通常的使用方式。

附注我没有可以向您提供调试日志或任何其他消息,因为该应用程序只是从屏幕上消失,根本没有任何通知。

最佳答案

如果它不起作用,那么你可以尝试简单的方法,例如

简单创建 View Controller 对象并传入导航

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

关于ios - UINAvigationController -> setViewControllers 导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44196516/

相关文章:

ios - 如何使用 NSDictionary 将数据值传递给其他 ViewController Objective-C?

ios - 使用导航 Controller 在 `prepareForSegue` 中设置数据

objective-c - 如何继承 UITableViewCell 的子类?

macos - Swift/OSX - 在定制的 NSSecureTextField 上禁用聚焦环

arrays - 快速从 TableView 列表中删除多个项目

iphone - 导航 Controller 不添加后退按钮

ios - 是否可以针对一个特定的 viewController 的不同目标使用不同的 xib?

ios - 没有参数的swift4选择器函数

html - iOS Safari <button disabled></button> 不禁用?

swift 2.0 : map & join