ここでは非常に奇妙な状況があります。methodUINAvigationController -> setViewControllers:animated:
を呼び出すと、アプリケーションがクラッシュします。 iOS 10.3.2とリリースモードでアプリケーションをビルドしているときにのみうまくいくのです。UINAvigationController - > setViewControllersがクラッシュする
詳細を収集しました。彼らは何が起こるのか理解するのを助けることができると思う。
問題は、iOS 10.3.2およびリリースモードでのみ表示されます。私は10.3.2でiPhoneでこれをチェックしていますが、リリースビルドは失敗しますが、デバッグは正常に動作します。さらに、私はiOS 10.3.2のAppStoreから以前のバージョンのアプリをチェックしましたが、それもOKです。デバッグとリリースのビルドは、以前のすべてのバージョンの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)
}
、それが1 :)を除くすべてのケースで正常に動作します:
は、情報源については、それは次のようになります。 UINAvigationController -> setViewControllers:animated:
は、iOS 3.0以降の標準のiOSメソッドであり、現在は廃止されていません。プログラムの流れを壊すものはありません。それを使用するのは通常の方法です。
P.S.デバッグログやその他のメッセージは表示されません。なぜなら、アプリは通知なしで画面から消えるからです。
正確なクラッシュエラーメッセージを貼り付けることはできますか? – user1046037
エラーメッセージはありません。私は説明でそれを言及しました。 – comrade
それで 'setViewControllers'がクラッシュを引き起こしたことをどうやって知りましたか? – user1046037