Ich benutze ein UITableView, um die Auswahl eines (von vielen) Items zu ermöglichen. Ähnlich wie bei der UI, wenn ich einen Klingelton auswähle, möchte ich, dass das ausgewählte Element überprüft wird und die anderen nicht. Ich möchte die Zelle ausgewählt haben, wenn sie berührt wird, und dann wieder auf die normale Farbe animiert werden (wiederum wie die Klingeltonauswahl-Benutzeroberfläche).UITableView, Probleme beim Zubehörwechsel bei Auswahl
Eine UIViewController-Unterklasse ist der Delegat und die Datenquelle meiner Tabelle (nicht UITableViewController, da ich auch eine Symbolleiste darin habe).
Ich setze den AccessoryType der Zellen in CellForRowAtIndexPath :, und mein Modell aktualisiert, wenn Zellen in DidSelectRowAtIndexPath: ausgewählt sind. Die einzige Möglichkeit, die ausgewählte Zelle zum Häkchen zu setzen (und die vorherige zu löschen), besteht darin, [tableView reloadData] in didSelectRowAtIndexPath: aufzurufen. Wenn ich das mache, ist das Animieren der Zellabwahl seltsam (ein weißes Feld erscheint dort, wo das Label der Zelle sein sollte). Wenn ich reloadData nicht aufruft, wird der accessoryType natürlich nicht geändert, daher werden die Häkchen nicht angezeigt.
Ich nehme an, ich könnte die Animation ausschalten, aber das scheint lahm. Ich habe auch damit gespielt, die Zellen in didSelectRowAtIndexPath: zu bekommen und zu verändern, aber das ist ein großer Schmerz.
Irgendwelche Ideen? Abgekürzter Code folgt ...
Ich habe aufgegeben und Animation ausgeschaltet, aber bearbeiten Kommentar des hatfinch hat den Trick. Ich hatte vorher mit dieser Lösung gespielt, aber es war mühsam, die anderen Zellen zu deaktivieren. Ich hatte nicht daran gedacht, den vorher ausgewählten Zellpfad zwischenzuspeichern, wie in Ron Srebo's Antwort. Danke euch beiden. – zpasternack