所以我有一个UITableView,里面充满了问题。此表的单元格与包含问题答案的另一个视图具有分段关系。此分段具有标识符"showAnswer"。现在,我想在问题表上实现搜索功能,并希望结果中的每个单元格也转到答案视图。
因此,在问题表中,控制器有添加搜索栏及其控制器的代码(顺便说一句,这在Swift中,但逻辑仍然相同):
let resultsController = SearchResultsController()
resultsController.questions = questions
searchController = UISearchController(searchResultsController: resultsController)
let searchBar = searchController.searchBar
searchBar.placeholder = "Enter a search term..."
searchBar.sizeToFit()
questionTable.tableHeaderView = searchBar
searchController.searchResultsUpdater = resultsController
现在,在SearchResultsController中,一旦选择了一行,我想转到答案视图。这是我得到的:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("showAnswer", sender: self)
}
现在这个崩溃了,我得到了一个错误,"receiver SearchResultsController没有标识符为"showAnswer"的segue。这是有道理的,但我该如何解决?由于我以编程方式添加了SearchResultsController,因此在情节提要上没有任何东西可以通过ctrl+拖动来创建SearchResultsCoontroller和AnswersController之间的分段关系。那我该怎么办?
您需要将持有视图控制器的segue连接到答案视图,并从持有视图控制器而不是从搜索控制器执行segue。
您还应该在segue的sender参数中发送适当的数据,这样您导航到的视图控制器就可以根据选择的问题进行更改
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
YourViewController.performSegueWithIdentifier("showAnswer", sender: questions[indexPath.row])
}