使用 UISearchController 进行 segue 的不同行为

Posted

技术标签:

【中文标题】使用 UISearchController 进行 segue 的不同行为【英文标题】:Different behavior for segue using UISearchController 【发布时间】:2014-12-02 03:48:39 【问题描述】:

我一定是在这里做错了什么。 我有一个 UITableView,并实现了一个 UISearchController。 我有一个链接到详细信息屏幕的原型单元格,并在 prepareForSegue 方法中传递选定的值。

对于普通视图控制器,一切正常,选择一行并推送详细信息屏幕(即从右侧滑入)。

但是,当使用 UISearchController 进行活动搜索时,详细信息屏幕会以模态方式呈现(即从屏幕底部向上滑动)而没有 UINavigationBar(因此不可能“返回”)

我没有使用 didSelectRowAtIndexPath,因为我使用了故事板来推送详细信息屏幕

为什么在每种情况下都正确调用“prepareForSegue”中的相同代码时呈现动画不同:

// MARK: -  Navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
    if (segue.identifier! == "PresentContactDetail") 
        // pass person details from selected row
        if let selectedRow = self.tableView.indexPathForSelectedRow()?.row 
            let selectedPerson = self.visibleResults[selectedRow]
            (segue.destinationViewController as ContactDetail).personRecord = selectedPerson
        
    

任何建议都非常感谢。

【问题讨论】:

【参考方案1】:

在 UITableViewController 的 ViewDidLoad 中设置 definesPresentationContext = true

【讨论】:

以上是关于使用 UISearchController 进行 segue 的不同行为的主要内容,如果未能解决你的问题,请参考以下文章

iOS 13 UISearchController + UIRefreshControl 故障

UISearchController - 键盘不显示

使用 UISearchController Swift 4 搜索多个结构数组

UISearchController 使控制器变黑

在导航推送上激活没有动画的 UISearchController

UISearchController