2016-12-27 10 views
1

Я реализую логику изменения цвета строки в строке таблицы iOS, я использую кнопку удаления, изменяя заголовок на «изменить цвет» и при нажатии этой кнопки я хочу изменить цвет этой конкретной строки, на которой была нажата кнопка.Как изменить цвет строки таблицы при нажатии кнопки удаления, а не удалять строку в 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 строки.

Как изменить цвет таблицы строки, на которой нажата кнопка «Изменить цвет (удалить)», и скрыть кнопку (например, отменять редактирование)?

ответ

1

Вы чуть было правильное решение, все, что вам нужно сделать, это:

  1. Найти правильную ячейку в Tableview с помощью indexPath.
  2. Изменение цвета фона выбранной ячейки.
  3. Обновить таблицуView только по выбранному indexPath.

    - (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]; } }

Here образец ViewController, как она должна быть использована.

+0

Спасибо, что она отлично работала – Kiran

0

Я не профессионал iOS, поэтому извините мое невежество, но является ли это естественной кнопкой удаления? Я не видел, что до сих пор, так что не знаю ..

Но если бы я был реализации этого, я хотел бы определить константу в верхней части файла: #define kCellTagDelete = 99 (или какой-либо другой неиспользуемый тег),

Затем, когда нажата кнопка удаления, измените тег ячейки kCellTagDelete, затем вызовите reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation с соответствующим indexPath (вы можете использовать массив размером 1) и обновите свой метод cellForRowAtIndexPath:, чтобы проверить, является ли тег == kCellTagDelete и, если да, то формат соответствующим образом.

+0

Привет, кнопка удаления находится на столе во время строки редактирования, можете ли вы помочь – Kiran