第一次点击后,该行将突出显示(灰色背景),然后我必须点击以下任何行以执行segue。
我确实得到了正确的读数,例如,indexPath.row
如果我最初点击第一行就返回0,那么紧接着我点击哪一行就可以了。
它是UITableViewController
的子类
override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
// delegate?.onSelect(users![indexPath.row])
print("selected %d", indexPath.row)
self.performSegue(withIdentifier: "segueToUserForm", sender: users![indexPath.row])
}
我确实从模拟器的硬件菜单中删除了所有内容和设置。
答案 0 :(得分:1)
似乎您正在使用didDeselectRowAt
。这意味着此代码不是在第一次点击tableCell之后才调用,而是在第二次点击取消选中时调用。因此,您的代码不应是这样:
override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
// delegate?.onSelect(users![indexPath.row])
print("selected %d", indexPath.row)
self.performSegue(withIdentifier: "segueToUserForm", sender: users![indexPath.row])
}
但是这个:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// delegate?.onSelect(users![indexPath.row])
print("selected %d", indexPath.row)
self.performSegue(withIdentifier: "segueToUserForm", sender: users![indexPath.row])
}
当然,didDeselectRowAt
在特定情况下很有用,但是,在您的情况下似乎没有用。简而言之,将didDeselctRowAt
替换为didSelectRowAt
。
答案 1 :(得分:0)
您应该使用didSelectRowAt
而不是didDeselectRowAt
来执行segue。
didDeselectRowAt
正在第二次点击中触发,因为第一次点击会触发didSelectRowAt
。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//Your Code
}