Receiver ...没有带标识符错误的segue

时间:2015-06-07 00:18:35

标签: ios swift segue

有问题的代码:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    tableView.deselectRowAtIndexPath(indexPath, animated: true)

    var card: String

    if (tableView == self.searchDisplayController?.searchResultsTableView){
        card = self.filtered[indexPath.row]
    }

    else{
        card = self.array[indexPath.row]
    }



    let destinationVC = SearchViewController()
    destinationVC.searchString = card
    destinationVC.performSegueWithIdentifier("ResultSegue", sender: self)

}

当我选择表格中的单元格时,我正在尝试将字符串传递给另一个视图。在故事板中,我将segue标识符命名为“ResultSegue”。

当我运行我的应用程序时会发生什么,当我点击一个单元格它加载下一个视图时,没有我正在发送的变量被更新,然后如果我返回并点击一个新单元格,应用程序将崩溃并给我标题警告。

我尝试过运行干净,并像其他线程建议的那样重置模拟器,但没有任何变化。

1 个答案:

答案 0 :(得分:0)

您应该在prepareForSegue函数而不是didSelectRowAtIndexPath函数中传递字符串。

而不是使用didSelectRowAtIndexPath,如下所示:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "ResultSegue" {

        if let indexPath = self.tableView.indexPathForSelectedRow() {
            var card: String
            if (tableView == self.searchDisplayController?.searchResultsTableView) {
                card = self.filtered[indexPath.row]
            } else {
                card = self.array[indexPath.row]
            }
            (segue.destinationViewController as SearchViewController).searchString = card
        }
    }
}