Pau*_*nge 19 iphone uitableview ios
点击时我UITableViewCell选择了一个.在此选定状态期间,如果用户再次点击该单元格,我希望该单元格取消选择.
我找不到任何被调用的委托调用.任何想法如何实现这一点?它真的会成为手势识别器吗?
pri*_*ohn 33
您实际上可以使用委托方法执行此操作 willSelectRowAtIndexPath:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if ([cell isSelected]) {
// Deselect manually.
[tableView.delegate tableView:tableView willDeselectRowAtIndexPath:indexPath];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[tableView.delegate tableView:tableView didDeselectRowAtIndexPath:indexPath];
return nil;
}
return indexPath;
}
Run Code Online (Sandbox Code Playgroud)
请注意,deselectRowAtIndexPath:不会自动调用委托方法,因此您需要手动进行这些调用.
Mat*_*aga 21
在Swift 4中:
func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
if let indexPathForSelectedRow = tableView.indexPathForSelectedRow,
indexPathForSelectedRow == indexPath {
tableView.deselectRow(at: indexPath, animated: false)
return nil
}
return indexPath
}
Run Code Online (Sandbox Code Playgroud)
使用“多选”模式时,单击已选择的行将不会调用“ didSelectRowAtIndexPath”。在“单选”模式下,仍然可以通过编程方式选择多于一行,并且这些行将在所有点击时触发didSelectRowAtIndexPath。
遇到任何相同问题的人,请注意。
Pau*_*nge -4
也许我的问题不够具体,但这两个答案有点超出了我的要求。
看来这是不可能的,我使用单元格的手势识别器来手动设置选定/未选定状态。
| 归档时间: |
|
| 查看次数: |
11537 次 |
| 最近记录: |