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

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];

}
4b9b3361

Ответ 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];
}