设置时我有一个子类UITableViewCell:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
在:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
在表格中我有多个选择,因此我可以从数据源中删除行。
我想要得到的是:
UITableViewCellSelectionStyleDefault
,而我设计的单元格不会受到选择样式的影响。我该怎么做?
答案 0 :(得分:2)
最优雅的方法是将selectionStyle
逻辑移动到您的子类中。
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
[super awakeFromNib];
// Set default selection style
self.selectionStyle = UITableViewCellSelectionStyleNone;
}
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
// Change the selection style based on if the cell is being edited or not
if (editing) {
self.selectionStyle = UITableViewCellSelectionStyleDefault;
} else {
self.selectionStyle = UITableViewCellSelectionStyleNone;
}
}
虽然gabbler的方法确实有效,但您必须调用[_tableView reloadData];
取消编辑动画。
答案 1 :(得分:0)
我假设当用户未处于编辑模式时,点击单元格会导致无选择。以下是要添加到cellForRowAtIndexPath中的代码:
if (tableView.editing) {
cell.selectionStyle = UITableViewCellSelectionStyleDefault;
} else {
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
这将使selectionStyle处于编辑模式 默认样式。记得在进入编辑模式时重新加载tableview。