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

Как отменить выбор ячейки uitableview, когда пользователь вернется к контроллеру представления

У меня есть ячейка uitableview, выделенная, когда пользователь ее выбирает, а затем переходит к подробному представлению. Я бы хотел, чтобы ячейка была не указана, когда они вернулись к контроллеру вида просмотра таблицы.

Как я могу это сделать?

Я предполагаю [cell.textLabel setHighlighted:NO]; в viewWillAppear, но ячейка не объявлена, если я ее там поставлю.

спасибо за любую помощь

4b9b3361

Ответ 1

Если вы используете подкласс UITableViewController, тогда просто установите свойство

self.clearsSelectionOnViewWillAppear = YES;

else на viewDidAppear просто вызовите

NSIndexPath *indexPath = self.tableView.indexPathForSelectedRow;
if (indexPath) {
    [self.tableView deselectRowAtIndexPath:indexPath animated:animated];
}

// MARK: - Swift 3
if let indexPath = tableView.indexPathForSelectedRow {
    tableView.deselectRow(at: indexPath, animated: animated)
}

Ответ 2

Swift 3.0

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    if let selectionIndexPath = self.tableView.indexPathForSelectedRow {
        self.tableView.deselectRow(at: selectionIndexPath, animated: animated)
    }
}

Ответ 3

Я решил ответить на этот вопрос вместо комментария.

Если вы используете раскадровку: Нажмите на свой UITableViewController → Установите флажок "Отбор: очистить по появлению"

Ответ 4

попробовать

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Deselect the row which was tapped
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

Ответ 5

Или какой-то неэлегантный путь =)

NSArray *arrayWithPaths = [tableView indexPathsForVisibleRows];
for (NSIndexPath *path in arrayWithPaths)
{
    [tableview deselectRowAtIndexPath:path animated:NO];
}

Ответ 6

swift 3

func clearOnAppearance() {
    for indexPath in tableView.indexPathsForSelectedRows ?? [] {
        tableView.deselectRow(at: indexPath, animated: true)
    }
}