有问题的代码:
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”。
当我运行我的应用程序时会发生什么,当我点击一个单元格它加载下一个视图时,没有我正在发送的变量被更新,然后如果我返回并点击一个新单元格,应用程序将崩溃并给我标题警告。
我尝试过运行干净,并像其他线程建议的那样重置模拟器,但没有任何变化。
答案 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
}
}
}