我在使用XIB文件的单元格的TableView遇到问题,当我第一次点击一个单元格时,它什么也没做,当我点击另一个单元格时,segue被调用了,但是带有第一个单元被点击。我在“ didDeselectRowAt” tableView函数上使用“ self.performSegue”。这是我的代码:
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
_ = tableView.dequeueReusableCell(withIdentifier: "CardCell") as! CardTableViewCell?
self.eachCard = cardsArray[indexPath.row]
self.performSegue(withIdentifier: "showCard", sender: tableView)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let card = segue.destination as? SingleShotViewController
if segue.identifier == "showCard" {
card?.name = eachCard["name"] as! String
card?.type = eachCard["type"] as! String
if eachCard["imageUrl"] == nil {
card?.imgURL = "http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=264373&type=card"
} else {
card?.imgURL = eachCard["imageUrl"] as! String
}
}
}
答案 0 :(得分:0)
当您在表格视图中选择一个单元格时,首先将调用didSelectRow函数。再次点击它时,将调用didDeselectRow函数。 只需将功能更改为didSelectRow即可正常工作。
答案 1 :(得分:0)
仔细查看,您会发现自己使用的是“ didDeselectRowAt indexPath”,这是为什么在第二次触摸时要执行segue和委托,所以与其直接将“ didDeselectRowAt indexPath”更改为“ didSelectRow indexPath”,它将正常工作< / p>
答案 2 :(得分:0)
使用此重载代替didDeselectRowAt
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
_ = tableView.dequeueReusableCell(withIdentifier: "CardCell") as! CardTableViewCell?
self.eachCard = cardsArray[indexPath.row]
self.performSegue(withIdentifier: "showCard", sender: tableView)
}