2017-05-26 19 views
0

ここでは非常に奇妙な状況があります。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.デバッグログやその他のメッセージは表示されません。なぜなら、アプリは通知なしで画面から消えるからです。

+0

正確なクラッシュエラーメッセージを貼り付けることはできますか? – user1046037

+0

エラーメッセージはありません。私は説明でそれを言及しました。 – comrade

+0

それで 'setViewControllers'がクラッシュを引き起こしたことをどうやって知りましたか? – user1046037

答えて

0

を渡すことができますので、 .1〜3.4.0。理由DelegateProxyType.swift : extension ObservableType : func subscribeProxyDataSourceに次の変更が発生します。

 return Disposables.create { [weak object] in 
     subscription.dispose() 
-  unregisterDelegate.dispose() 
     object?.layoutIfNeeded() 
+  unregisterDelegate.dispose() 
    } 

私はReactiveX/RxSwiftリポジトリにレポートを掲載しました。あなたが興味を持っているなら、最終的な状態を確認することができます。

0

その動作しない場合、あなたは

シンプルcreatのView Controllerオブジェクトのような簡単な方法を試してみて、私はこの動作は3.3からRxCocoaの更新後に現れたことを発見したナビゲーションに

let nextVC = storyboard?.instantiateViewController(withIdentifier:"ScrollViewController") as! ScrollViewController 
self.navigationController?.pushViewController(nextVC, animated: true) 
関連する問題