didSelectRowAtIndexPath gibt den falschen IndexPath zurück
Dem ich begegnet bin, einen wirklich rätselhaften Fehler. Die ersten Zeile meiner UITableView liefert 1 und die zweite gibt 0 in der indexPath! Wie ist das möglich?
In mein `-(void)viewDidLoad " alles ist noch in Ordnung. Ich bin Hervorhebung der ersten Zeile erfolgreich mit
currentRow = 0;
[tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0]
animated:NO scrollPosition:UITableViewScrollPositionNone];
Habe ich die variable currentRow
für die Verfolgung, welche Zeile ausgewählt ist (eine andere Steuerung änderungen, nach denen man aktuell ausgewählt ist).
Nun in meiner " didDeselectRowAtIndexPath Stellvertretung-Funktion habe ich noch:
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
...
NSLog(@"IndexPath: %@", [indexPath description]);
}
Dem log zeigt Folgendes:
IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 0]
wenn ich Tippen Sie auf die zweite - Reihe, und
IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]
wenn ich Tippen Sie auf die erste - Reihe.
Gibt es keine Zeile einfügen oder löschen oder Sortieren, etc., nicht einmal scrollen. Es ist ein einfaches UITableView, gruppiert Stil, mit Abschnitt 1 und 3 Zeilen. Was könnte die Ursache sein?
Danke für Eure Hilfe,
S
InformationsquelleAutor der Frage Mundi | 2010-11-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie umgesetzt hatDeselectRowAtIndexPath. Es wird ausgelöst, wenn die Zeile nicht mehr ausgewählt.
Beim berühren der zweiten Zeile, die erste Zeile ist nicht mehr ausgewähltso dass [0, 1] angezeigt.
Beim berühren der ersten Reihe wieder, die zweite Zeile ist jetzt nicht mehr ausgewählt, also [0, 0] wird angezeigt.
Diese sind völlig zu erwarten.
Implementieren hatSelectRowAtIndexPathwenn Sie es brauchen, um zu reagieren, wenn die Zeile ist ausgewählt.
InformationsquelleAutor der Antwort kennytm
Trotz der Titel, die überladene Methode ist in der Tat
didDeselectRowAtIndexPath
so dass es klingt wie das Verhalten ist korrekt-wenn der 1. Zeile berührt wird, die 0. wird deaktiviert, und Umgekehrt.InformationsquelleAutor der Antwort