2011-02-08 2 views
21

Obecnie wykonuję pracę wewnątrz delegata didSelectRowAtIndexPath i zauważyłem, że mój wiersz jest nadal "zaznaczony" po tym, jak wrócę do kontrolera widoku później.Jak usunąć zaznaczenie obiektu UITableViewCell po wykonaniu niektórych czynności przy użyciu metody didSelectRowAtIndexPath?

Jak mogę odznaczyć ten wiersz wewnątrz samego uczestnika?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    //do logic and ... it remains selected in the view? 
} 

Odpowiedz

50
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
37

Zazwyczaj chcesz usunąć zaznaczenie wiersza, gdy kontroler widoku pojawi się ponownie:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES]; 
} 

To co UITableViewController robi niejawnie i animowanie procesu cofnięcie po kontroler widoku pojawi się ponownie jest pomocna wskazówka dla użytkownika, która komórka wcześniej wybrała.

+0

Myślę, że lepiej jest użyć 'viewWillAppear:', aby użytkownik nie zauważył krótko wybranego wiersza – doctorBroctor