2017-02-10 12 views
1

Ich arbeite an einer sozialen App wie Instagram, mit Firebase. Wo Nutzer ihre Fotos auf dem Hauptbildschirm und in ihrem Profil teilen. Mein Problem ist, wenn benutzer1benutzer2 die mochtepicture2 in Hauptbildschirm und Besuche benutzer2 die Profil ähnlichen Wertes für diese picture2 ist immer noch die gleiche, bis Zelle neu geladen wird.tableView.reloadData() jedes Mal erscheint

Wenn ich scrolle nach unten und komme zurück picture2 Zelle wird neu geladen und es wird korrekt wie Wert haben. Weil ich didSet {} in meiner Zelle verwende, wo der holende ähnliche Wert gemacht wird. Aber das ist eine schlechte Benutzererfahrung. Meine Lösung bestand also darin, jedes Mal CollectionViews neu zu laden.

Ist das eine schlechte Sache für die Leistung oder gibt es ein anderes Problem?

Danke.

+0

Es ist ein bisschen schlecht für die Leistung, möchten Sie vielleicht nur die letzte Zeile neu laden ... Überprüfen Sie dies: [Aktualisieren Sie bestimmte Zeile von UITableView basierend auf Int in Swift] (http://stackoverflow.com/questions/ 28206492/refresh-bestimmte-row-of-uitableview-basierte-on-int-in-Swift) –

+0

Bitte teilen Sie einige Code und wenn möglich als Problem Bild teilen –

+0

@ Xcoder123 ist es eigentlich nicht die letzte Zeile. Sie sind chronologisch sortiert und können nicht sagen, wo es in der Profilseite entspricht, so dass reloadRowsAtIndexPaths() für mich nicht funktioniert, bis ich meine Methoden neu anlege, denke ich. –

Antwort

2

Sie können es wie folgt:

Objective C

NSArray *visibleCells = [_tblWhoAreYou visibleCells]; 
for (WhoRUSWCell *cell in visibleCells) { 
    NSIndexPath *indexPath = [_tblWhoAreYou indexPathForCell:cell]; 
    cell.imageStatus.image=[UIImage imageNamed:@"greenCircle.png"]; 
    [cell setNeedsLayout]; // OR you can reload particular cell 
} 

Swift 3,0

var visibleCells: [Any] = self.tblWhoAreYou.visibleCells 
for cell: WhoRUSWCell in visibleCells { 
    var indexPath: IndexPath? = self.tblWhoAreYou.indexPath(for: cell) 
    cell.imageStatus.image = UIImage(named: "greenCircle.png") 
    cell.setNeedsLayout() // OR you can reload particular cell 
} 

Damit können sie direkt Bild ohne Nachladen direkt aktualisieren können. Sie müssen nur Ihr Tag oder etwas anderes überprüfen, um das ausgewählte Objekt zu finden, das Sie aktualisieren möchten.

+0

Können Sie mir mehr Informationen darüber geben? Ich bin Anfänger bei der Entwicklung und ich benutze Swift. Und die eigentliche Frage war, ist es eine schlechte Sache, CollectionView jedes Mal neu zu laden, wenn die Ansicht erscheint. Vielen Dank. –

+0

@UnalCelik Wenn Sie meine Antwort mögen, dann möchten Sie CollectionView nicht jedes Mal neu laden. Ohne erneutes Laden können Sie alles in Ihrer Zelle aktualisieren. –

+0

Es funktioniert wie Charme ... Das einzige, was für mich nicht funktionierte, war setNeedsLayout(). Ich habe stattdessen collectionView.ReloadItems (at: [indexPath]) verwendet. Vielleicht möchten Sie es für andere Neulinge bearbeiten :) Danke! –

Verwandte Themen