如何在单击删除按钮时更改表行颜色,而不是删除iOS中的行

时间:2016-12-27 16:28:34

标签: ios objective-c iphone ipad

我正在iOS表格行中实现行颜色更改逻辑,我使用删除按钮将标题更改为“更改颜色”,单击该按钮我想要更改单击按钮的特定行的颜色。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) 
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    cell.contentView.backgroundColor = [UIColor redColor];
}
}

我尝试在上面的方法中实现颜色更改逻辑,但它没有反映,只反映数据重载但仍然是索引正在改变-2行。

如何更改单击“更改颜色(删除)”按钮的行的表格颜色并隐藏按钮(例如取消编辑)?

2 个答案:

答案 0 :(得分:1)

你几乎拥有正确的解决方案,你需要做的就是:

  1. 使用indexPath
  2. 在tableView中查找正确的单元格
  3. 更改所选单元格的背景颜色。
  4. 仅在选定的indexPath刷新tableView。

    - (void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // 1. Find cell UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath]; // 2. Change bg colour selectedCell.contentView.backgroundColor = [UIColor redColor]; // 3. Refresh tableView [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation: UITableViewRowAnimationFade]; } }

  5. Here是一个示例viewController,它应该如何使用。

答案 1 :(得分:0)

我不是iOS专家,请原谅我的无知,但这是一个原生的删除按钮?我还没有看到,所以不知道..

但是如果我实现这个,我会在文件的顶部定义一个常量:#define kCellTagDelete = 99(或其他一些未使用的标记),

然后,当您按下删除按钮时,更改单元格的标记kCellTagDelete,然后使用正确的indexPath调用reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation(您可以使用大小为1的数组),并更新您的{{1检查标签== kCellTagDelete的方法,如果是,则格式化。