【问题标题】:Adding a segue from a search results UITableView从搜索结果 UITableView 添加一个 segue
【发布时间】:2015-04-12 15:17:05
【问题描述】:

所以我有一个填充了问题的 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)
            }

现在这崩溃了,我收到错误消息,“reciever SearchResultsController has no segue with identifier 'showAnswer'。这是有道理的,但我该如何解决这个问题?由于我以编程方式添加了 SearchResultsController,因此我无需在情节提要上按 ctrl+拖动来创建 SearchResultsController 和 AnswersController 之间的连续关系。那我该怎么办?

【问题讨论】:

  • 我面临着完全相同的问题 - 您找到解决方案了吗?我的设置有点复杂。我的UISearchController 在点击搜索按钮时以模态方式呈现,它安装在UISplitViewController 的主视图控制器中......谢谢......

标签: iphone xcode swift


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多