【问题标题】:popToViewController failed to pop to view errorpopToViewController 无法弹出查看错误
【发布时间】:2014-09-10 19:26:22
【问题描述】:

我正在使用以下代码:

 @IBAction func popToRoot(sender:UIBarButtonItem){

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

}

此函数与自定义后退按钮链接,并且 h 文件链接在 objective-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 0x00000001023ec995 异常预处理 + 165 1 libobjc.A.dylib 0x000000010209b9a3 objc_exception_throw + 45 2 CoreFoundation 0x00000001023ec7fa +[NSException raise:format:arguments:] + 106 3 基础 0x0000000101cc637f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195 4 UIKit 0x0000000100b456b6-[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 发送事件:] + 683 13 UIKit 0x0000000100a0a1a1 -[UIApplication 发送事件:] + 246 14 UIKit 0x0000000100a1707a _UIApplicationHandleEventFromQueueEvent + 17591 15 UIKit 0x00000001009f3269 _UIApplicationHandleEventQueue + 1967 16 核心基础 0x0000000102322a31 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 17 核心基础 0x000000010231826d __CFRunLoopDoSources0 + 269 18 核心基础 0x00000001023178a4 __CFRunLoopRun + 868 19 核心基础 0x00000001023172d6 CFRunLoopRunSpecific + 470 20 图形服务 0x0000000105475bbc GSEventRunModal + 161 21 UIKit 0x00000001009f6288 UIApplicationMain + 1282 22 FoodForTeeth 0x0000000100054db3 主要 + 115 23 libdyld.dylib 0x0000000102b45145 开始 + 1 ) libc++abi.dylib:以 NSException 类型的未捕获异常终止 (lldb)

怎么了?

【问题讨论】:

  • reason: 'Failed to get popped view controller.' 告诉您foodforteethViewController() 的结果不是导航堆栈中的对象的实例。请将foodforteethViewController() 的声明添加到您的问题中。
  • 啊,是的,即使用户没有浏览它,我也会尝试转到该视图控制器

标签: swift poptoviewcontroller


【解决方案1】:

你不能弹出不在NavigationController堆栈中的视图控制器。你应该像这样弹出

如果你想弹出到 rootViewController 比直接方法使用这个

 @IBAction func popToRoot(sender:UIBarButtonItem){


        self.navigationController.popToRootViewControllerAnimated(false)
}

【讨论】:

  • 要添加到这个答案,您将弹出到当前堆栈的顶部,其中有一个 NavigationController。因此,将 UINavigationControllers 放置在正确的位置有助于实现预期的结果。附带说明一下,我无法像宣传的那样使用 popToViewController(弹出到堆栈中的更高级别)。我一直黑屏。
【解决方案2】:

另一种返回特定视图控制器的方法是使用展开转场: What are Unwind segues for and how do you use them?

【讨论】:

    猜你喜欢
    • 2012-05-15
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    相关资源
    最近更新 更多