所以我有一个填充了问题的UITableView。此表的单元格与另一个包含问题答案的视图具有segue关系。这个segue有一个标识符'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)
}
现在崩溃了,我得到的错误是'收件人SearchResultsController没有带标识符'showAnswer'的segue。这是有道理的,但我该如何解决这个问题呢?由于我以编程方式添加了SearchResultsController,因此我无需在故事板上按住Ctrl +拖动以在SearchResultsController和AnswersController之间创建segue关系。那我该怎么办?
答案 0 :(得分:0)
您需要将segue从保持视图控制器连接到答案视图,并从保持视图控制器而不是搜索控制器执行segue。
您还应该在segue的sender参数中发送相应的数据,以便您导航到的视图控制器可以根据所选的问题进行更改
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
YourViewController.performSegueWithIdentifier("showAnswer", sender: questions[indexPath.row])
}