UITableView - nach oben blättern

In meiner Tabellenansicht muss ich nach oben blättern. Aber ich kann nicht garantieren, dass das erste Objekt Abschnitt 0, Zeile 0 sein wird. Es kann sein, dass meine Tabellenansicht mit Abschnitt Nummer 5 beginnt.

Ich erhalte also eine Ausnahme, wenn ich aufrufe:

[mainTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];

Gibt es eine andere Möglichkeit, in der Tabellenansicht nach oben zu blättern?

Lösung

UITableView ist eine Unterklasse von UIScrollView, so dass Sie auch verwenden können:

[mainTableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];

Oder

[mainTableView setContentOffset:CGPointZero animated:YES];

Und in Swift:

mainTableView.setContentOffset(CGPointZero, animated:true)

Und in Swift 3 & oben:

mainTableView.setContentOffset(.zero, animated: true)
Kommentare (26)

Hinweis: Diese Antwort ist nicht gültig für iOS 11 und später.

Ich bevorzuge

[mainTableView setContentOffset:CGPointZero animated:YES];

Wenn Sie einen oberen Einschub in Ihrer Tabellenansicht haben, müssen Sie ihn abziehen:

[mainTableView setContentOffset:CGPointMake(0.0f, -mainTableView.contentInset.top) animated:YES];
Kommentare (8)

Mit diesem Code können Sie einen bestimmten Abschnitt nach oben scrollen

CGRect cellRect = [tableinstance rectForSection:section];
CGPoint origin = [tableinstacne convertPoint:cellRect.origin 
                                    fromView:];
[tableinstance setContentOffset:CGPointMake(0, origin.y)];
Kommentare (2)