无法在选择搜索结果时执行 unwind segue - 导航堆栈将不会更新

Posted

技术标签:

【中文标题】无法在选择搜索结果时执行 unwind segue - 导航堆栈将不会更新【英文标题】:Cannot perform unwind segue on selecting search result - the navigation stack will not be updated 【发布时间】:2016-01-05 01:21:35 【问题描述】:

我有两个视图控制器,第一个(VC1)有一个按钮,当点击它时,它将导航到第二个视图控制器(VC2)。 VC2 是一个包含名称列表的表格视图,顶部有搜索栏用于搜索。如果我正常选择一个单元格,它将调用 unwind segue 以弹回 VC1。但是,如果我搜索一个名称,然后在搜索结果中选择一个单元格,它无法执行展开转场,它只会关闭搜索 UI 并导致如下错误:

popToViewController:transition: 在 UINavigationController 调用时 正在发生现有的过渡或演示;导航 堆栈不会更新。

我也尝试关闭 tableview 上的 VC2:didSelectCellAtIndex 但没有用。

任何帮助将不胜感激!!!

【问题讨论】:

【参考方案1】:

尝试使用以下函数:

[self.navigationController popViewControllerAnimated:YES];

【讨论】:

你应该在代码中删除你的pop函数,因为你是在storyboard里做的 我将tableview单元格与storyboard中的unwind segue连接起来,所以代码中没有pop函数,但是它不能工作。 你必须这样做----'popToViewController:transition:'。它警告你。搜索你的代码。 它现在可以按照您的代码完美运行,我终于在情节提要中删除了我的展开序列,并在“tableview:didSelectCellAtIndex”中调用“popViewControllerAnimated:”。非常感谢 Lumialxk! 您无需断开情节提要中的展开转场。将此 if 检查添加到“prepareForSegue:”中: if (self.searchController.isActive) [self.navigationController popViewControllerAnimated:YES];

以上是关于无法在选择搜索结果时执行 unwind segue - 导航堆栈将不会更新的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式执行Unwind segue?

在 unwind segue 之后执行 push segue

将 unwind segue 与 UISearchController 一起使用时出错

以编程方式执行 unwind segue

unwind segue / performSegueWithIdentifier: 问题

如何在没有动画的情况下执行 unwind segue?