So scrollen Sie zum Ende einer UITableView auf dem iPhone, bevor die Ansicht angezeigt wird
Ich habe eine UITableView
der gefüllt ist mit den Zellen eine variable Höhe. Ich möchte die Tabelle nach unten scrollen, wenn der Blick gedrückt wird in den Blick.
Momentan habe ich die folgende Funktion
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[log count]-1 inSection:0];
[self.table scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
log ist ein veränderliches array mit den Objekten, aus denen der Inhalt der einzelnen Zellen.
Der obige code funktioniert in viewDidAppear
aber dies hat die unglückliche Nebenwirkung, die die Anzeige oben in der Tabelle, wenn Sie die Ansicht zuerst angezeigt und springt dann nach unten. Ich würde es bevorzugen, wenn die table view
konnte gescrollt werden, um den Boden, bevor es angezeigt wird.
Habe ich versucht, das Blättern in viewWillAppear
und viewDidLoad
aber in beiden Fällen die Daten nicht geladen wurden, in die Tabelle noch und beide werfen eine Ausnahme.
Jede Beratung wäre sehr geschätzt werden, auch wenn es nur ein Fall von mir zu sagen, was ich habe, ist alles, was möglich ist.
InformationsquelleAutor der Frage acqu13sce | 2010-05-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, dass der Aufruf
[table setContentOffset:CGPointMake(0, CGFLOAT_MAX)]
wird tun, was Sie wollen.InformationsquelleAutor der Antwort Jacob Relkin
Vom Jacob ' s Antwortdas ist der code:
InformationsquelleAutor der Antwort Osama F
Ich denke, der einfachste Weg ist dieser:
Swift 3 Version:
InformationsquelleAutor der Antwort Chamira Fernando
Wenn Sie Rollen müssen, um GENAU zum Ende der Inhalte, Sie können es so machen:
InformationsquelleAutor der Antwort Hans One
Ich bin mit autolayout und keine der Antworten, die für mich gearbeitet. Hier ist meine Lösung, die schließlich gearbeitet:
InformationsquelleAutor der Antwort RaffAl
Den angenommen, die Lösung von @JacobRelkin hat bei mir nicht funktioniert von iOS 7.0 mit Auto-Layout".
Habe ich eine benutzerdefinierte Unterklasse der
UIViewController
und fügte hinzu, eine Instanz-variable_tableView
als Untersicht seineview
. Ich positionierte_tableView
mit Auto-Layout". Ich habe versucht, den Aufruf dieser Methode am Ende vonviewDidLoad
und sogar inviewWillAppear:
. Weder arbeitete.So, ich habe die folgende Methode, um meine benutzerdefinierten Unterklasse
UIViewController
.Aufrufen
[self tableViewScrollToBottomAnimated:NO]
am EndeviewDidLoad
funktioniert. Leider verursacht es auchtableView:heightForRowAtIndexPath:
zu bekommen, als drei mal, für jede Zelle.InformationsquelleAutor der Antwort ma11hew28
Hier ist eine Erweiterung, die ich umgesetzt in Swift 2.0. Diese Funktionen sollte aufgerufen werden, nachdem die
tableview
geladen wurde:InformationsquelleAutor der Antwort Ryan Herubin
Details
xCode 8.3.2, swift 3.1
Code
Nutzung
InformationsquelleAutor der Antwort Vasily Bodnarchuk
Eigentlich ein "Schneller" Weg, es zu tun in swift :
arbeiten Perfekt für mich.
InformationsquelleAutor der Antwort XcodeNOOB
Wollte ich die Tabelle zu laden, die mit dem Ende der Tabelle im frame angezeigt. Ich fand mit
nicht arbeiten, weil es gab ein Fehler bei der Tabelle die Höhe war weniger als die Rahmenhöhe. Hinweis: meine Tabelle hat nur einen Abschnitt.
Die Lösung, die für mich gearbeitet wurde die Umsetzung der folgenden code in viewWillAppear:
BOOL-ivar initialLoad auf TRUE gesetzt ist in viewDidLoad.
InformationsquelleAutor der Antwort T.J.
For Swift:
InformationsquelleAutor der Antwort Segev
Sollten Sie verwenden
UITableViewScrollPositionBottom
statt.InformationsquelleAutor der Antwort Erphan Rajput
Für Swift 3 ( Xcode 8.1 ):
InformationsquelleAutor der Antwort Irshad Qureshi
Ist natürlich ein Bug.
Wahrscheinlich irgendwo in Ihrem code, den Sie verwenden
table.estimatedRowHeight = value
(zum Beispiel 100). Ersetzen Sie diesen Wert durch den höchsten Wert, den Sie denken, eine Zeile Höhe bekommen könnte, zum Beispiel 500..Dies sollte das problem lösen in Kombination mit folgenden code:
InformationsquelleAutor der Antwort Mohsen Karbassi
Mithilfe der oben genannten Lösungen, wird dies einen Bildlauf zum Ende der Tabelle (nur, wenn der Tabelleninhalt wird zuerst geladen):
InformationsquelleAutor der Antwort JimmyJammed
Nach viel Gefummel das ist was für mich gearbeitet:
Den Schlüssel stellte sich heraus nicht Verpackung
scrollToRowAtIndexPath
innerhalb vondispatch_async
wie einige vorgeschlagen haben, aber Sie einfach es mit einem AufruflayoutIfNeeded
.Mein Verständnis von diesem ist, kann der Aufruf der scroll-Methode in der aktuellen thread garantiert, dass die scroll-offset gesetzt ist, sofort vor der Ansicht wird angezeigt. Als ich-Versand an den Haupt-thread, die Sicht wurde immer angezeigt, für einen Augenblick, bevor die schriftrolle in Kraft trat.
(Auch NB benötigen Sie die
viewHasAppeared
Flagge, weil Sie nicht wollen, umgoToBottom
jedes malviewDidLayoutSubviews
genannt wird. Es wird aufgerufen, zum Beispiel wenn die Ausrichtung ändert.)InformationsquelleAutor der Antwort skot
In Swift 3.0
InformationsquelleAutor der Antwort Amit Verma
Dank Jakob für die Antwort. wirklich hilfreich, wenn jemand interessant mit monotouch für c# - version
InformationsquelleAutor der Antwort Mahesh
Verwenden Sie diesen einfachen code zu scrollen tableView unten
InformationsquelleAutor der Antwort Bibin Joseph
Wenn Sie zum laden der Daten asynchron vor nach unten scrollen, hier ist die mögliche Lösung:
InformationsquelleAutor der Antwort SoftDesigner
Funktion auf swift 3 Blättern Sie nach unten
InformationsquelleAutor der Antwort Tarik
In iOS das funktionierte gut für mich
Es muss aufgerufen werden, aus
viewDidLayoutSubviews
InformationsquelleAutor der Antwort Josip B.
[self.tableViewInfo scrollRectToVisible:CGRectMake(0, self.tableViewInfo.contentSize.Höhe-selbst.tableViewInfo.Höhe, selbst.tableViewInfo.Breite, selbst.tableViewInfo.Höhe) animated:YES];
InformationsquelleAutor der Antwort leetvin
Akzeptierte Antwort hat nicht funktioniert mit meiner Tabelle (Tausende von Zeilen, die dynamische Belastung), aber der code unten funktioniert:
InformationsquelleAutor der Antwort user3246173
Ohne scrollen können Sie tun es einfach mit diesem code:
InformationsquelleAutor der Antwort Anuj Kumar Rai
Wenn Sie frame für tableview programmgesteuert, stellen Sie sicher, dass Sie sind Einstellung, frame korrekt.
InformationsquelleAutor der Antwort Narasimha Nallamsetty
sollten Sie
oder es wird nicht ganz nach unten Blättern.
InformationsquelleAutor der Antwort
Swift, brauchen Sie nur
machen es automatisch Blättern Sie zu der Unterseite
InformationsquelleAutor der Antwort Even Cheng
In swift 3.0
Wenn Sie wollen, um zu gehen jede Zelle des tableviews Verändern cell index Wert wie der Wandel "selbst.yourArr.count" - Wert .
InformationsquelleAutor der Antwort Amit Verma
Ich glaube, dass die alten Lösungen funktionieren nicht mit swift3.
Wenn Sie wissen Anzahl der Zeilen in der Tabelle, die Sie verwenden können :
InformationsquelleAutor der Antwort ymutlu