0

次のコードを使用しています。

 @IBAction func popToRoot(sender:UIBarButtonItem){

    navigationController.popToViewController(foodforteethViewController(), animated: false)

}

この関数はカスタムの戻るボタンにリンクされており、h ファイルは object-c/swift ブリッジング ファイルにリンクされています。これに関する問題は、次のようなエラーが発生することです。

2014-07-19 23:35:40.842 FoodForTeeth[9040:238499] * -[UINavigationController popToViewController:transition:] でのアサーションの失敗、/SourceCache/UIKit_Sim/UIKit-3232.3/UINavigationController.m:5345 2014-07-19 23: 35:40.845 FoodForTeeth[9040:238499] *キャッチされない例外「NSInternalInconsistencyException」が原因でアプリを終了しています。理由:「ポップされたビュー コントローラーを取得できませんでした。」 *最初のスロー コール スタック: ( 0 CoreFoundation 0x00000001023ec995ExceptionPreprocess + 165 1 libobjc.a.dylib 0x00000001020209b9a3 objc_exception_throw + 45 2 Corefoundation 0x00000001023ec7fa + [nsexception Raise:Format:] + 106 3 Foundation 0x00000101ck637f:nsassert: -[UINavigationController popToViewController:transition:] + 762 5 FoodForTeeth 0x00000001000272fe _TFC12FoodForTeeth9dietDiary9popToRootfS0_FCSo15UIBarButtonItemT_ + 302 6 FoodForTeeth 0x00000001000274f2 _TToFC12FoodForTeeth9dietDiary9popToRootfS0_FCSo15UIBarButtonItemT_ + 66 7 UIKit 0x00000001009f76b6 -[UIApplication sendAction:to:from:forEvent:] + 75 8 UIKit 0x00000001009f76b6 -[UIApplication sendAction:to:from:forEvent:] + 75 9 UIKit 0x0000000100af91c0 -[UIControl _sendActionsForEvents:withEvent:] + 467 10 UIKit 0x0000000100af858f -[UIControl touchesEnded:withEvent:] + 522 11 UIKit 0x0000000100a3c3b8 -[UIWindow _sendTouchesForEvent:] + 735 12 UIKit 0x0000000100a3cce3 -[UIWindow sendEvent:] + 683 13 UIKit 0x0000000100a0a1a1 -[UIApplication sendEvent:] + 246 14 UIKit 0x0000000100a1707a _UIApplicationHandleEventFromQueueEvent + 17591 15 UIKit 0x00000001009f3269 _UIApplicationHandleEventQueue + 1967 16 CoreFoundation 0x0000000102322a31 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION] + 246 14 UIKit 0x0000000100a1707a _UIApplicationHandleEventFromQueueEvent + 17591 15 UIKit 0x00000001009f3269 _UIApplicationHandleEventQueue + 1967 16 CoreFoundation 0x0000000102322a31 __CFUNCAPER_OURIS_FFORMS_CALLING_OUT_TOCE0] + 246 14 UIKit 0x0000000100a1707a _UIApplicationHandleEventFromQueueEvent + 17591 15 UIKit 0x00000001009f3269 _UIApplicationHandleEventQueue + 1967 16 CoreFoundation 0x0000000102322a31 __CFUNCAPER_OURIS_FFORMS_CALLING_OUT_TOCE0+ 17 17 CoreFoundation 0x000000010231826d __CFRunLoopDoSources0 + 269 18 CoreFoundation 0x00000001023178a4 __CFRunLoopRun + 868 19 CoreFoundation 0x00000001023172d6 CFRunLoopRunSpecific + 470 20 GraphicsServices 0x0000000105475bbc GSEventRunModal + 161 21 UIKit 0x00000001009f6288 UIApplicationMain + 1282 22 FoodForTeeth 0x0000000100054db3 main + 115 23 libdyld.dylib 0x0000000102b45145 start + 1 ) libc++ abi.dylib: タイプ NSException (lldb) のキャッチされない例外で終了します

何がうまくいかないのですか?

4

2 に答える 2

1

スタックにないView Controllerをポップすることはできません。NavigationControllerこのようにポップする必要があります

直接メソッドがあるよりも rootViewController にポップしたい場合は、これを使用します

 @IBAction func popToRoot(sender:UIBarButtonItem){


        self.navigationController.popToRootViewControllerAnimated(false)
}
于 2014-07-19T22:50:48.460 に答える