Как убрать цвет стиля выбора ячеек при повторном отображении таблицы в iphone? - PullRequest
17 голосов
/ 05 мая 2010

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

Ответы [ 5 ]

48 голосов
/ 09 мая 2010

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

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

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

14 голосов
/ 11 сентября 2013

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

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

На ваших UITableViewCells

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

14 голосов
/ 06 мая 2010

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

- (void)viewWillAppear:(BOOL)animated  
{  
    NSIndexPath *tableSelection = [self.tableView indexPathForSelectedRow];  
    [self.tableView deselectRowAtIndexPath:tableSelection animated:NO];  
}  
0 голосов
/ 15 марта 2017

Для Swift 3:

override func viewWillDisappear(_ animated: Bool) {
        if let indexPath = self.tableview.indexPathForSelectedRow {
            tableview.deselectRow(at: indexPath, animated: true)
        }
    }
0 голосов
/ 05 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...