2014-12-02 55 views
5

我必须在这里做错事。 我有一个UITableView,并实现了一个UISearchController。 我有一个原型单元格链接到详细信息屏幕,并在prepareForSegue方法中传递选定的值。使用UISearchController的segue的不同行为

对于普通视图控制器,所有工作正常,选中一行并按下详细信息屏幕(即从右侧滑入)。

然而,当有一个主动搜索,使用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

in ViewDidLoad of UITableViewController set definesPresentationContext = true