我面临一个奇怪的问题。我有一个启用了多个选择的tableview。在cellForRowAtIndexPath方法中,我有以下代码:
if getSelectionStatusForItemAt(indexPath.row)
{
cell.selected = true
self.tblPayments.selectRowAtIndexPath(indexPath, animated: true, scrollPosition: UITableViewScrollPosition.None)
}
return cell
重新加载数据后,选择单个/多个单元格。 indexPathsForSelectedCells方法也返回非空数组。但问题是,当我再次触摸其中一个单元格时,会调用didSelectRowAtIndexPath
方法而不是didDeselectRowAtIndexPath
。
我认为我错过了tableview委托工作的方式。
答案 0 :(得分:1)
当您致电self.tblPayments.selectRowAtIndexPath(indexPath, animated: true, scrollPosition: UITableViewScrollPosition.None)
时,您正在选择该行,但是在您取消选择该行之前它一直处于选中状态,这就是为什么didSelectRowAtIndexPath
被调用而didDeselectRowAtIndexPath
未被调用的原因。
要在didDeselectRowAtIndexPath
致电didSelectRowAtIndexPath
后选择您应该选择的小区后致电tableView.deselectRowAtIndexPath(indexPath, animated: true)
。另一种选择是尽可能在didSelectRowAtIndexPath
进行操作。