我在这里遇到一个非常奇怪的情况 - 调用method UINAvigationController -> setViewControllers:animated:
会导致应用崩溃。它只在iOS 10.3.2和我在发布模式下构建应用程序时很开心。
我收集了更多细节。希望他们能帮助理解会发生什么。
此问题仅出现在iOS 10.3.2和发布模式中。我在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+获得,现在不予弃用。没有任何黑客或其他东西可以破坏程序流程。这是使用它的常用方法。
P.S。没有调试日志或我可以提供的任何其他消息,因为应用程序只是从屏幕上消失而根本没有任何通知。
答案 0 :(得分:0)
如果它不起作用,那么你可以像
一样轻松尝试简单的创建视图控制器对象并传入导航
let nextVC = storyboard?.instantiateViewController(withIdentifier:"ScrollViewController") as! ScrollViewController
self.navigationController?.pushViewController(nextVC, animated: true)
答案 1 :(得分:0)
我发现在将RxCocoa从3.3.1更新到3.4.0之后出现了这种行为。这是因为FALSE
中的以下更改:
DelegateProxyType.swift : extension ObservableType : func subscribeProxyDataSource
我已将报告发布到ReactiveX/RxSwift存储库。如果您有兴趣,可以查看那里的最终状态。