Ответ 1
[tableView deselectRowAtIndexPath:indexPath animated:YES];
В настоящее время я выполняю некоторую работу внутри делегата didSelectRowAtIndexPath и заметил, что моя строка все еще "выбрана" после того, как я вернусь к контроллеру представления позже.
Как я могу отменить выбор этой строки внутри самого делегата?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//do logic and ... it remains selected in the view?
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
Как правило, вы хотите отменить выделение строки, когда контроллер просмотра снова появится:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
}
То, что UITableViewController
делает неявным образом, а анимировать процесс отмены выбора после того, как контроллер представления появляется снова, является полезным советом для пользователя относительно того, какую ячейку они выбрали ранее.