从搜索结果UITableView中添加segue



所以我有一个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])
        }

最新更新