1

当我tableView不在编辑模式时,我不希望用户能够触摸单元格并使其突出显示。但是,因为我设置allowsSelectionDuringEditing为 YES,所以用户可以在编辑模式下选择单元格。

如何仅在编辑模式下显示单元格突出显示的视图或颜色?

4

3 回答 3

0

有趣的场景,幸运的是它就像这样简单:

// -tableView:shouldHighlightRowAtIndexPath: is called when a touch comes down on a row. 
// Returning NO to that message halts the selection process and does not cause the currently selected row to lose its selected look while the touch is down.
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath{
    return self.isEditing;
}

正如您从 Apple 的评论中看到的,shouldHighlight 是选择过程的第一步,因此在表格被编辑的情况下,这是停止它的地方。

于 2015-07-24T11:19:42.557 回答
-1

我想到了。这是我设置tableView编辑模式的方法:

- (void)tableViewEdit {

    if (self.tableView.editing) {
        [self.editButton setTitle:NSLocalizedString(@"Edit", nil) forState:UIControlStateNormal];
        self.tableView.allowsSelection = NO;
    } else {
        [self.editButton setTitle:NSLocalizedString(@"Done", nil) forState:UIControlStateNormal];
        self.tableView.allowsSelection = YES;
    }
    [self.tableView setEditing:!self.tableView.editing animated:YES];

}//end

我之前也设置self.tableView.allowsSelection为 NO 作为默认值,因此只有在进入编辑模式后才会为 YES。

于 2013-04-29T17:37:03.080 回答
-1
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  static NSString *CellIdentifier=@"Cell";
  UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if(cell==nil){
     //YOUR inits
  }

  if(self.editing){
    [cell setSelectionStyle:UITableViewCellEditingStyleNone];
  }else
    [cell setSelectionStyle:UITableViewCellEditingStyleBlue];

  return cell;

}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
  if(self.editing)return; //NO ACTION
}
于 2013-04-29T05:01:52.627 回答