【问题标题】:How to know if UITableViewCell is deselected in editing mode如何知道 UITableViewCell 是否在编辑模式下被取消选择
【发布时间】:2013-01-29 19:38:03
【问题描述】:
我有一个支持编辑删除的表格视图。如果 Tableview 处于编辑模式,则支持多选。我想根据所选单元格的数量启用或禁用删除按钮。如果至少选择了一个单元格,我将启用删除按钮,否则不启用。类似于 iPhone 邮件应用程序。
当我选择一个单元格时,在编辑模式下调用了 didSelectRowMethod 并且我启用了删除按钮。但是,如果我再次点击所选单元格以取消选择,则不会调用 didSelectRow。所以我无法禁用我的删除按钮。如果在编辑模式下取消选择单元格,您是否知道如何知道以及从何处获取控件?
谢谢。
【问题讨论】:
标签:
ios
uitableview
editing
【解决方案1】:
这里如何检查它是否处于编辑模式不要忘记设置tableview.delegate=self;
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
if ([tableView isEditing]) {
NSLog(@"tableview is editing");
}else{
NSLog(@"tableview is not editing");
}
}
【解决方案2】:
来自文档:
已选择
一个布尔值,指示单元格是否被选中。
@property(nonatomic, getter=isSelected) BOOL 已选择
讨论
选择会影响标签、图像和背景的外观。当单元格的选定状态设置为“是”时,它将为选定单元格绘制背景,其标题为白色。默认值为 NO。如果您通过此属性将选择状态设置为 YES,则不会对新状态外观的转换进行动画处理。对于动画选择状态转换,请参阅 setSelected:animated: (page 26) 方法。
【解决方案3】:
回答我自己的问题。我发现 UITableview 上有一个委托方法叫做 -
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
在这种方法中可以知道取消选择。
【解决方案4】:
请在表格处于编辑模式时实现didDeselectRowAt indexPath:委托方法,因为didSelectRowAt在取消选择时不起作用
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
}