Подтвердить что ты не робот

Как удалить цвет стиля выбора ячейки, когда еще раз отобразите вид таблицы в iphone?

Я новичок в разработке iphone. Я создал таблицу, отображающую мое содержимое. Если я выбираю строку, это состояние выделяется синим цветом и переходит к другому представлению, и если я нажму кнопку "Назад", он перейдет к таблице, показывая щелкнув клетку в синем цвете, я хочу удалить выделенный цвет в таблице, перейдя к его представлению. Как я могу это сделать. Спасибо.

4b9b3361

Ответ 1

Я, наконец, получил его, выполнив это в моем классе представления таблицы.

- (void)viewWillAppear:(BOOL)animated  
{  
    NSIndexPath *tableSelection = [self.tableView indexPathForSelectedRow];  
    [self.tableView deselectRowAtIndexPath:tableSelection animated:NO];  
}  

Ответ 2

Я думаю, что общепринятый способ сделать это - отменить выбор ячейки, когда вы переходите к новому представлению. Вместо viewWillAppear используйте метод делегата tableview didSelectRowAtIndexPath и тот же деселектRowAtIndexPath, который вы использовали.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath{
  [tableView deselectRowAtIndexPath:newIndexPath animated:YES];
}

(и общепринятым я имею в виду "материал, который я чаще всего вижу в примере кода". Это зависит от того, что вы хотите, чтобы он выглядел в конце)

Ответ 3

Вы делаете это неправильно, в методе cellForRowAtIndexPath. используйте это

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

На вашем UITableViewCells

Это было бы правильным способом, если бы вы хотели, чтобы ячейка не была выделена, или при выборе не касались ни возврата, ни просмотра. Если вы хотите, чтобы ячейка была отменена при возврате, чтобы посмотреть другие решения, вам больше подходит.

Ответ 4

Стандартная реализация viewDidAppear: должна позаботиться об этом для вас. Если вы переопределили этот метод в контроллере табличного представления, не забудьте вызвать [super viewDidAppear:animated] в свой метод переопределения.

Ответ 5

Для Swift 3:

override func viewWillDisappear(_ animated: Bool) {
        if let indexPath = self.tableview.indexPathForSelectedRow {
            tableview.deselectRow(at: indexPath, animated: true)
        }
    }