【发布时间】:2013-06-16 19:28:39
【问题描述】:
我正在尝试使用 popToViewController,但我不断收到错误消息“尝试弹出到不存在的视图控制器”?
我在设置视图中,当用户单击“退出”时,我关闭了设置 VC 并转回到调用 unwind segue 方法的主视图。在 unwind segue 方法中,我调用了以下方法。
-(IBAction)endSettingsViaLogout:(UIStoryboardSegue *)segue {
//[self performSegueWithIdentifier:@"mainToLoginSegue" sender:self];
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];
//[self.navigationController popViewControllerAnimated:YES];
DLog(@"User finished with search");
}
当调用 poptoVC 时,我得到“试图弹出到不存在的视图控制器”。
我对 self.navigationController.viewControllers 进行 NSLog 记录,我可以看到 VC 的堆栈,而我想要弹出的堆栈在里面?
/// 更新 //////
好的,这就是我找到的。如果我对设置的转场是常规的“推送”转场,那么代码可以工作,我会被弹回到我想要的位置。如果我从屏幕左侧进行自定义转场,则它会停止工作。即使使用自定义 segue,self.navigationcontroller.viewcontrollers 也会在堆栈中显示它。那么为什么我不能弹回它呢?或者我怎样才能使用自定义转场回到它?
【问题讨论】:
-
这在很大程度上取决于您的自定义 segue 对堆栈执行的操作以及调用
popToViewController:时视图控制器是否仍在堆栈中@ segue 何时调用?在你的 popToViewController 之前还是之后?如果 segue 已经将用户带回主屏幕,为什么还要尝试弹出视图控制器?更多详细说明您的转场和事件顺序的代码将有很大帮助。
标签: ios objective-c segue poptoviewcontroller