使用UISearchController的segue的不同行为

red*_*nda 5 uitableview ios segue swift uisearchcontroller

我一定是在做错事.我有一个UITableView,并实现了一个UISearchController.我有一个Prototype单元格链接到详细信息屏幕,并传递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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何建议都感激不尽.

小智 1

在UITableViewController的ViewDidLoad中设置 definesPresentationContext = true