popToViewController не удалось просмотреть сообщение об ошибке

Вопрос:

Я использую следующий код:

 @IBAction func popToRoot(sender:UIBarButtonItem){

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

}

Эта функция связана с пользовательской кнопкой возврата, а файл h связан в файле-объекте-c/swift. Проблема в том, что я получаю ошибку, как показано ниже:

2014-07-19 23: 35: 40.842 FoodForTeeth [9040: 238499] * Ошибка утверждения в – [UINavigationController popToViewController: переход:],/SourceCache/UIKit_Sim/UIKit-3232.3/UINavigationController.m:5345 2014-07-19 23: 35: 40.845 FoodForTeeth [9040: 238499] * Завершение приложения из-за неперехваченного исключения “NSInternalInconsistencyException”, причина: “Не удалось получить всплывающий контроллер просмотров”. * Первый стек вызова броска: (0 CoreFoundation 0x00000001023ec995 exceptionPreprocess + 165 1 libobjc.A.dylib 0x000000010209b9a3 objc_exception_throw + 45 2 CoreFoundation 0x00000001023ec7fa + [NSException raise: format: arguments:] + 106 3 Foundation 0x0000000101cc637f – [NSAssertionHandler handleFailureInMethod: object: file: LineNumber: описание:] + 195 4 UIKit 0x0000000100b456b6 – [UINavigationController popToViewController: переход:] + 762 5 FoodForTeeth 0x00000001000272fe _TFC12FoodForTeeth9dietDiary9popToRootfS0_FCSo15UIBarButtonItemT_ + 302 6 FoodForTeeth 0x00000001000274f2 _TToFC12FoodForTeeth9dietDiary9popToRootfS0_FCSo15UIBarButtonItemT_ + 66 7 UIKit 0x00000001009f76b6 – [UIApplication sendAction: до: от: 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 + 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 + 22 FoodForTeeth тысяча двести восемьдесят-два 0x0000000100054db3 основных + 115 23 libdyld.dylib 0x0000000102b45145 старт + 1) LibС++ abi.dylib: завершение с неперехваченным исключение типа NSException (lldb)

Что пошло не так?

Ответ №1

вы не можете выставить контроллер вида, который не находится в стеке NavigationController

если вы хотите, чтобы pop в rootViewController, чем есть прямой метод, используйте это

 @IBAction func popToRoot(sender:UIBarButtonItem){


self.navigationController.popToRootViewControllerAnimated(false)
}

Ответ №2

Еще один способ вернуться к определенному контроллеру просмотра – использовать разматывать segues: Что такое Unwind segues для и как вы их используете?

Оцените статью
TechArks.Ru
Добавить комментарий