2011-01-03 5 views
0

Ich habe eine App, die ich arbeite, die eine Tabellenansicht mit ein paar Zellen hat, und wenn Sie eine Zelle treffen, schiebt der Nav-Controller eine neue Ansicht. Ziemlich einfaches Zeug. Das Problem ist, dass, wenn ich auf eine Zeile trete, die ganze Reihe blau hervorhebt und dann blau bleibt, während die Ansicht vom Controller präsentiert wird. Wenn ich dann zurück wechsle, um zur Tabellenansicht zurückzukehren, ist die Zeile gerade immer noch komplett hervorgehoben Obwohl ich es nicht drücke oder so.Seltsames Problem mit iPhone UITableView Zelle nicht un-Hervorhebung nach dem Klicken

Ich habe ein paar Apps mit der Tabellenansicht gemacht, und habe dieses Verhalten noch nie zuvor gesehen, so dass ich nicht weiß, was passiert. Gibt es eine Einstellung, die ich irgendwo falsch gesetzt habe?

Dank

Antwort

3

Sie müssen manuell Zelle deaktivieren (wahrscheinlich in tableView:didSelectRowAtIndexPath:-Methode):

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    // Your code 
    ... 
} 
+3

Sollte in 'viewWillAppear' sein. – BoltClock

+0

@BoltClock, das kann von der gewünschten Wirkung abhängen, aber ich mache das in der Regel didDeselectRowAtIndexPath-Methode und es ist in Ordnung für mich – Vladimir

2

Wenn Ihr View-Controller eine Unterklasse von UITableViewController ist, wird es automatisch die Zeile deaktivieren, nachdem Sie den Rücken getroffen Taste. Wenn Sie UITableViewController nicht von der Unterklasse ableiten, müssen Sie deselectRowAtIndexPath aufrufen: animated: wenn Sie es deaktivieren möchten.

+0

Und wenn Sie UITableViewController Unterklasse und überschreiben 'viewWillAppear: animated:', stellen Sie sicher, die Super-Implementierung aufzurufen – Brian