我有一个带有 UITableViewController 的导航 Controller 。
当用户在 TableViewController 上选择一个单元格时,它会推送到一个新的 View Controller,其中包含一个 Table View。然后用户选择一个单元格,数据通过展开转场传回。
问题是在选择单元格之前使用搜索栏时出现此错误。这是控制台的内容:
popToViewController:transition: called on <UINavigationController 0x7fc8ab856e00> while an existing transition or presentation is occurring; the navigation stack will not be updated.
来自 View Controller 的代码我正在展开来自:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let cell = tableView.cellForRow(at: indexPath) as! MonsterSpriteCell
let monster = monsters[indexPath.row]
selectedMonster = monster
if isTeamBuilding {
// **ERROR OCCURS HERE**
performSegue(withIdentifier: "saveToTeamBuilderTableVC", sender: cell)
} else {
performSegue(withIdentifier: "showMonsterDetail", sender: self)
}
}
这是项目的链接。我正在展开的 View Controller 是浏览 View Controller 。我要放松的 View Controller 是 TeamBuilderViewController
https://github.com/emanleet/monsterpedia
编辑:我认为可能需要注意的是,segue 展开到 TeamBuilderTableViewController,它是一个 View Controller ,它位于容器内,作为另一个 View Controller 的一部分。有谁知道这是否是我的 unwind segue 不起作用的原因?
Best Answer-推荐答案 strong>
SearchController 呈现一个空 View Controller
如果您在搜索处于事件状态时在 didSelectRow.. 中打印 presentedViewController ,您将看到一个 View Controller 。
这意味着您正在尝试从当前演示文稿下执行 segue。在执行任何 segue 或演示之前,您应该关闭 SearchController 。
同样在这种情况下,您不需要 SearchController ,因为您只使用 SearchBar 进行过滤。
取而代之的是,在 tableViewHeaderView 中放置一个 SearchBar 并使用它的委托(delegate)进行过滤,而不是检查 isActive 是否可以访问完整列表。过滤后的结果,只需在文本被清除时将整个数组放入过滤器中,并始终访问过滤后的结果。
关于ios - 将 unwind segue 与 UISearchController 一起使用时出错,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/40002392/
|