Laden UITableView von unten
Ich versuche zu imitieren, die iMessage-bubble-text-Verhalten mit einer UITableView
. Um immer scrollen Sie nach unten ich bin mit scrollToRowAtIndexPath
wenn viewDidLoad
und viewDidAppear
. Dies ist, weil, wenn die viewDidLoad
- Methode aufgerufen, die Tabelle wurde nicht komplett geladen, also muss ich extra scrollen in viewDidAppear
. Dieser code macht den trick. Jedoch, was ich will, ist nicht eine animierte scrollen (Einstellung animated
zu NO
löst dieses Problem nicht), möchte ich die Tabelle angezeigt werden soll immer von unten, nicht laden Sie die Tabelle und gehen Sie dann zu der letzten Zeile.
Ist das möglich? Ich finde keine Lösung, die sich vollständig mit dem gewünschten Verhalten.
Das scheint wie eine Menge Arbeit. Nur umkehren Ihrer Datenquelle wechseln das Letzte Objekt das erste Objekt und so weiter. Dann haben Sie es angezeigt, in umgekehrter Reihenfolge.
Es sind nur 2 Zeilen code!
Wie wäre die Umkehrung Ihrer Datenquelle Array ?!?
Umkehrung meiner datasource array Kraft scrollen von unten nach oben? Wenn nicht, kann ich nicht diese Lösung verwenden.
InformationsquelleAutor amb | 2012-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie vermeiden, den Anruf von viewDidLoad, weil das scrollen innerhalb viewDidAppear macht diesem ersten Anruf überflüssig. viewDidAppear aufgerufen wird, jedes mal, wenn Sie zurück navigieren, um den Blick, sondern viewDidLoad wird nur einmal aufgerufen, wenn die view initialisiert ist.
Ich Stimme mit früheren Kommentaren zu verstecken, den Blättern aus der Benutzer und nicht die änderung der Art, eine UITableView ist das laden von Daten. Mein Vorschlag wäre, die Nutzung scrollToRowAtIndexPath Methode in der Methode viewWillAppear mit animation legen. Nach, dass, wenn Sie haben, fügen Sie eine neue Zeile, während die Tabelle für den Benutzer sichtbar ist, verwenden Sie insertRowsAtIndexPaths:withRowAnimation: zum hinzufügen einer Zeile am unteren Rand der Tabelle anzeigen. Werden Sie sicher, kümmern sich um das hinzufügen der Daten am Ende Ihres Daten-Modell, so dass, wenn der Benutzer navigiert Weg und kommt zurück, er kommt zurück, um das gleiche layout.
Hoffe, das hilft.
Bearbeiten:
Sah gerade deinen Grund für die Nichtannahme des früheren Antworten und dachte, ich würde ein wenig erläutern mehr. Die Lösung, die ich vorschlagen würde erfordern ein minimum an Aufwand zu vermeiden, aufrufen reloadData mal wieder und somit vermeiden, den Aufruf der scrollToRowAtIndexPath Methode wieder und wieder. Sie brauchen nur einen Anruf machen zu scrollToRowAtIndexPath in viewWillAppear, um einen Bildlauf zum unteren Rand der Tabelle anzeigen (ausblenden der übergang von der Benutzer, wenn er so tut), und Sie würden nicht brauchen, das wieder zu tun.
viewWillAppear
.aber bevor Sie scrollen müssen wir reloadData Methode, die bewirkt, dass die animation blink-Effekt. wie zu beheben für die erste Zeit zu kommen, in Bildschirm und fügen Sie die Daten in ein array und load table-und scroll nach unten, ohne blink-Effekt.
InformationsquelleAutor Numan Tariq
Dies ist die beste Lösung!
Nur in umgekehrter alles!
Swift 4.0:
Aber vorsichtig sein, weil jetzt die headerView und footerView Positionen werden Umgekehrt auch.
bricht scroll-Indikator, aber es funktioniert 🙂
Dies ist ein hacky Lösung und wird zu Problemen führen hinunter die Straße, wenn Sie brauchen, um hinzuzufügen, jede Art von swipe-gesten/Aktionen zu den Zellen.
mit -M_PI zu setzen scheint die scroll-Anzeige auf der linken Seite. verwenden Sie selbst.tableView.transform = CGAffineTransformMakeScale(1, -1); zu halten, Blättern-Indikator auf der rechten Seite
ERSTAUNLICH! Nicht einverstanden mit dem streichen Kommentar als könnte man Sie drehen, um den text als gut!
InformationsquelleAutor Christos Hadjikyriacou
Mache ich etwas ähnliches in einem RPN-Rechner habe ich gebaut. Ich habe eine Tabelle anzeigen mit allen zahlen und, wenn eine Zahl Hinzugefügt, um den Stapel, alles, was erscheint, eine Zelle. Wenn ich das laden der view rufe ich:
In meinem viewWillAppear. So ist meine Tabelle-Ansicht startet, gezeigt an der Unterseite des Stapels und keine animation zu sehen ist. Indem Sie diesen in der viewWillAppear, jedes mal, wenn ich navigieren Sie zu der Ansicht, es zeigt sich am Ende der Tabelle.
Wenn ich zahlen auf den stack, ich fügen Sie es einfach in ein array, enthält alle zahlen und dann den text in der richtigen Zeile wie diese:
Ich auch sicherstellen, dass immer wenn ich ein update der tableview mit einem neuen Wert, den ich zuerst in die reloadData-Funktion, und rufen Sie dann die scrollToRowAtIndexPath-Funktion, die ich oben zitiert, auf diese Weise bleibe ich am unteren Ende der Tabelle.
InformationsquelleAutor Jbryson
Die Lösung ist das überschreiben
viewWillAppear
und lassen Sie es zu scrollen (nicht animiert) auf der Unterseite:Durch ausführen dieser bei
viewWillAppear
es getan werden, bevor der Benutzer sieht die Tabelle.InformationsquelleAutor Tal Bereznitskey
Können Sie Ihre
UITableView
versteckt aufviewDidLoad
, und dann ändern Sie es sichtbar aufviewDidAppear
rechts, nachdem Sie das scrollen der Tabelle nach unten. Diese Weise wird der Benutzer nicht sehen, die Scroll-animation.InformationsquelleAutor Eli Ganem
Können Sie es beheben, indem Sie eine unsichtbare Fußzeile und führen Sie die Berechnungen. Wenn die Fußzeile geladen wird, wird der contentSize aktualisiert wird. Machen Sie einen Bildlauf ich überprüfen, legen Sie die contentOffset der tableview.
Habe ich auskommentiert, der animation Teil, da Sie wollte, dass es auch ohne, aber es funktioniert auch.
Erstellte ich eine BOOL automaticScroll auslösen, die ganz nach unten scrollen. Dies sollte in der Methode viewWillAppear, oder wenn Sie die Daten laden, und laden Sie den tableView.
Wenn Sie möchten, fügen Sie Zeilen hinzu, Sie müssen auch die BOOL, wie:
Wenn Sie weitere Hilfe benötigen, lassen Sie es mich bitte wissen.
InformationsquelleAutor Roland Keesom
verwenden Sie zum scrollen die Zeile in tableview bestimmten position
InformationsquelleAutor Vinodh
nur änderung Inhalt Einfügung-nach dem laden von Daten zum verschieben von Inhalten anzeigen der Tabelle anzeigen, wenn die Höhe kleiner ist als übergeordnete Ansicht.
InformationsquelleAutor Fadi Abuzant
Swift 3.1
Credits: @Christos Hadjikyriacou
cell.contentView.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi))
InformationsquelleAutor Masih
Swift 3.0
InformationsquelleAutor IvanovDeveloper