Ich habe bei der Implementierung von UITableView
in einer iOS-App, an der ich gerade arbeite (iOS SDK 4.2), auf ein Problem gestoßen. Wenn ich in der Tabellenansicht auf eine Zelle tippe und dann durch die Ansicht blättere, so dass die Zelle den Bildschirm verlässt, wird die zuletzt ausgewählte Zelle erneut ausgewählt, wenn sie wieder angezeigt wird.
Um dies zu testen, habe ich ein neues View Based Application-Projekt erstellt, ein UITableView
in Interface Builder gezogen und den View-Controller als Datenquelle und Delegate der Tabellenansicht festgelegt und den folgenden Code in den View-Controller eingefügt:
Wenn ich diese Funktion (im Simulator oder auf dem Gerät) ausführen würde, wenn ich irgendeine Zelle (z. B. Zelle 12) antippen würde, würde sie ausgewählt und abgewählt werden. Danach, wenn keine Zellen in der Tabelle ausgewählt sind, wenn ich die Ansicht scrolle, so dass die zuletzt ausgewählte Zelle (in diesem Fall 12) den Bildschirm verlässt, wird sie erneut ausgewählt, wenn sie wieder erscheint.
Ist dies das beabsichtigte Standardverhalten für UITableView
? Oder möglicherweise ein Fehler in meiner Implementierung? Was wäre der beste Weg, um diese Zelle in dieser Situation zu deaktivieren?
Ich habe mich gefragt, ob ich das selbst herausfinden könnte:
Mein Problem war die Verwendung der UITableViewCell
Methode setSelected:
anstelle der UITableView
Methode deselectRowAtIndexPath:
.
Tags und Links uitableview ios cocoa-touch uiscrollview