从搜索结果UITableView添加segue

时间:2015-02-12 02:13:29

标签: iphone xcode swift

所以我有一个填充了问题的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关系。那我该怎么办?

1 个答案:

答案 0 :(得分:0)

您需要将segue从保持视图控制器连接到答案视图,并从保持视图控制器而不是搜索控制器执行segue。

您还应该在segue的sender参数中发送相应的数据,以便您导航到的视图控制器可以根据所选的问题进行更改

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    YourViewController.performSegueWithIdentifier("showAnswer", sender: questions[indexPath.row])
        }