UITableView выбирает и отменяет выбор строки
У меня есть UITableViewcell, который остается выделенным после прикосновения к нему. Я хотел бы знать, как убрать выделение сразу после того, как оно станет видимым после вашего прикосновения.
Поэтому, когда вы дотрагиваетесь до UITableViewCell, я бы хотел, чтобы он был выделен и выделен, а затем, когда пользователь поднимает палец, я хотел бы отменить выбор и отменить подсветку UITableViewCell.
Это то, что я делаю до сих пор, и отмена выбора работает, но ячейка все еще выделена.
#pragma mark -- select row
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%@", indexPath);
NSLog(@"%@", cell.textLabel.text);
}
#pragma mark -- deselect row
-(void) tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
Ответы
Ответ 1
-(void) tableView:(UITableView *)tableView didDeselectRowAtIndexPath:
(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
Это бесконечный цикл, я совершенно уверен. Однако... это похоже на правильный путь. Вы можете переместить вызов этого метода в didSelectRowAtIndexPath:
.
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:
(NSIndexPath *)indexPath {
//stuff
//as last line:
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
В этом случае deselectRowAtIndexPath
можно вызывать из любого места в любое время, когда вы хотите, чтобы строка была отменена.
[self.myTableView deselectRowAtIndexPath:[self.myTableView
indexPathForSelectedRow] animated: YES];
Ответ 2
Вам нужно отменить выбор строки по методу didSelectRowAtIndexPath
Пример кода
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}