菜鸟教程小白 发表于 2022-12-11 17:49:19

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


                                            <p><p>我有一个带有 UITableViewController 的导航 Controller 。</p>

<p>当用户在 TableViewController 上选择一个单元格时,它会推送到一个新的 View Controller,其中包含一个 Table View。然后用户选择一个单元格,数据通过展开转场传回。</p>

<p>问题是在选择单元格之前使用搜索栏时出现此错误。这是控制台的内容:</p>

<pre><code>popToViewController:transition: called on &lt;UINavigationController 0x7fc8ab856e00&gt; while an existing transition or presentation is occurring; the navigation stack will not be updated.
</code></pre>

<p>来自 ViewController 的代码我正在展开<strong>来自</strong>:</p>

<pre><code>func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
      tableView.deselectRow(at: indexPath, animated: true)
      let cell = tableView.cellForRow(at: indexPath) as! MonsterSpriteCell
      let monster = monsters
      selectedMonster = monster
      if isTeamBuilding {
            // **ERROR OCCURS HERE**
            performSegue(withIdentifier: &#34;saveToTeamBuilderTableVC&#34;, sender: cell)
      } else {
            performSegue(withIdentifier: &#34;showMonsterDetail&#34;, sender: self)
      }
    }
</code></pre>

<p>这是项目的链接。我正在展开的 ViewController 是浏览 ViewController 。我要放松的 ViewController 是 TeamBuilderViewController
<a href="https://github.com/emanleet/monsterpedia" rel="noreferrer noopener nofollow">https://github.com/emanleet/monsterpedia</a> </p>

<p>编辑:我认为可能需要注意的是,segue 展开到 TeamBuilderTableViewController,它是一个 ViewController ,它位于容器内,作为另一个 ViewController 的一部分。有谁知道这是否是我的 unwind segue 不起作用的原因?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>SearchController 呈现一个空 ViewController <br/>
如果您在搜索处于事件状态时在 <code>didSelectRow..</code> 中打印 <code>presentedViewController</code>,您将看到一个 ViewController 。<br/>
这意味着您正在尝试从当前演示文稿下执行 segue。在执行任何 segue 或演示之前,您应该关闭 <code>SearchController</code>。</p>

<p>同样在这种情况下,您不需要 <code>SearchController</code>,因为您只使用 <code>SearchBar</code> 进行过滤。<br/>
取而代之的是,在 <code>tableViewHeaderView</code> 中放置一个 <code>SearchBar</code> 并使用它的委托(delegate)进行过滤,而不是检查 <code>isActive</code> 是否可以访问完整列表。过滤后的结果,只需在文本被清除时将整个数组放入过滤器中,并始终访问过滤后的结果。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将 unwind segue 与 UISearchController 一起使用时出错,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/40002392/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/40002392/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将 unwind segue 与 UISearchController 一起使用时出错