Speichern Sie die ausgewählte Zeile in UITableView nach reloadData
Ich Schreibe benutzerdefinierte jabber-client im iphone.
Benutze ich xmppframework als Motor.
Und ich habe UITableViewController mit NSMutableArray für repesent Kontaktliste.
Wenn ich(oder jemand ändern, der Inhalt) Dienstplan (auch bekannt als Kontakt-Liste) will ich ändern UITableView Elemente (hinzufügen/entfernen/ändern). Also, wenn Benutzer arbeiten mit listView an der Zeit, wenn die Liste aktualisiert, die von
[items addObject:newItem];
[self.tableView reloadData];
user verloren, aktuellen Auswahl.
So, meine Frage ist howto speichern (wenn möglich, ich meine, wenn gegeben, ausgewählte Element nicht entfernt) aktuellen Element auswählen nach reloadData?
Thx.
InformationsquelleAutor der Frage vinnitu | 2009-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfache Weg ist, so etwas wie dieses:
InformationsquelleAutor der Antwort Marco
Hinzufügen von ein wenig zu Marco ' s Antwort:
Ersten, wenn Sie mit Mehrfachauswahl, können Sie diese Methode, um Ihre
ViewController
und nennen Sie es, Wann immer Sie benötigen, rufen Sie[tableView reloadData]
:Zweiten, wenn Sie in einer
UITableViewController
und die Sie beibehalten möchten, die Auswahl nach tableView angezeigt wird, es ist ein feature in UITableViewController:clearsSelectionOnViewWillAppear
können Sie ein-oder ausschalten.Siehe hier: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewController_Class/Reference/Reference.html
InformationsquelleAutor der Antwort marmor
Hinzufügen einer Verzögerung hat bei mir nicht funktioniert (getestet auf iOS 8.4 und iOS 9). Was funktioniert hat war das hinzufügen eines Anrufs zu
-layoutIfNeeded
auf die ausgewählte Zelle, die nach dem Aufruf-selectRowAtIndexPath:animated:scrollPosition:
.InformationsquelleAutor der Antwort antonjn
Die Problemumgehung ist die Verwendung reloadSections: statt reloadData. Aus irgendeinem Grund reloadData entfernt die aktuelle Auswahl.
InformationsquelleAutor der Antwort Greg
Auf iOS 9.3 und Swift 2.x, ich musste einfach rufen Sie die Funktion auf der Haupt-thread 🙂
InformationsquelleAutor der Antwort Kevin Delord
Diese funktioniert bei mir:
Der trick ist, selectRowAtIndexpath führen Sie später ein bisschen. Der code oben ist eine Xcode-Vorlage, die Sie auswählen können, wenn Sie mit dem schreiben beginnen
dispatch_after
.InformationsquelleAutor der Antwort Adam Wallner
Dies ist eine Lösung für den Fall wenn Sie wollen, um die Tabelle updates und halten Sie die Auswahl:
InformationsquelleAutor der Antwort Ezeki
SWIFT 3:
InformationsquelleAutor der Antwort Maksim Kniazev
Es klingt wie Sie nicht mit einem 'Modell' für die Daten sehr einfach aktualisieren Sie den 'view' (der Benutzeroberfläche), und ist somit wohl ein schlechtes design.
reloadData sollte die Ansicht aktualisiert werden, mit Daten aus dem Modell enthalten die aktuellsten Daten angezeigt werden.
Suche nach Ressourcen auf der 'model-view-controller-Muster'
InformationsquelleAutor der Antwort Mobs