IPhone: So scrollen Sie in die 1. Zelle des 2. Abschnitts und lassen Sie den Kopfzeilen des 1. Abschnitts sichtbar

StackOverflow https://stackoverflow.com/questions/4597839

Frage

Ich habe ein UitableView mit Zeilen und Abschnitten. Ich möchte zum ersten Punkt des zweiten Abschnitts scrollen und den Kopfball des ersten Abschnitts sichtbar lassen. Als hätte ich die Liste manuell gescrollt, bis ich diesen Zustand erreichte.

---- TOP OF SCREEN ----
Header of first section
Header of the second section
cell 1
cell 2
cell 3
Header of the third section
cell 1
cell 2
...

ScrollTorowatIndexPath: [NSIndexPath IndexPathForrow: 0 INSETIK: 1] macht den Job nicht, sondern verbirgt den Kopfzeilen des ersten Abschnitts.

War es hilfreich?

Lösung

Wir gehen weiter. Ich fand diese Methode basierend auf Kevins Idee. Um auf Ja animiert zu werden, fange ich das Ende der Animation mit einer Delegiertenmethode von UiscrollView. Es klappt. Aber jede Lösung, die dazu beitragen würde, nicht zwei Animationen zu machen, wäre sehr geschätzt. Irgendeine Idee, wie das geht?

- (IBAction) scrollToToday:(BOOL)animate {
    [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] atScrollPosition:UITableViewScrollPositionTop animated:animate];
    if (animate == NO) [self showFirstHeaderLine:NO];
}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
    [self showFirstHeaderLine:YES];
}

- (void) showFirstHeaderLine:(BOOL)animate {
    CGRect headerRect = [self.tableView rectForHeaderInSection:1];
    CGPoint scrollPoint = headerRect.origin;
    scrollPoint.y -= headerRect.size.height;
    [self.tableView setContentOffset:scrollPoint animated:animate];
}

Dude zu diesem Code, der Prozess, wenn animiert auf Ja eingestellt ist, sollte unendlich im Vordergrund zwischen ScrollViewDidendsCrollinganimation und ShowfirSheaderline ... es schleifen, ja, aber nur einmal ... Irgendeine Idee, warum?

Andere Tipps

Sie können das Richtgrad für die gewünschte Zeile schnappen, dann die Höhe des Header des vorherigen Abschnitts abziehen und bis zu diesem Punkt scrollen. So etwas wie das folgende (nicht getestete) sollte funktionieren:

CGRect rowRect = [table rectForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];
CGRect headerRect = [table rectForHeaderInSection:0];
rowRect.origin.y -= headerRect.size.height;
rowRect.size.height += headerRect.size.height;
[table scrollRectToVisible:rowRect animated:YES]; // UITableView is a subclass of UIScrollView

Ich habe deinen Code ausprobiert und es funktioniert !!

Für die Loop -Frage hat Sie, da Sie einen Offset (setContentOffset) festlegen, nichts mit der Schriftrolle zu tun. Es wird nicht Scrollview -Delegierter anrufen. Die ScrollViewDidendsCrollinganimation wird also nur einmal aufgerufen, was von ScrolltorowatIndexPath aufgerufen wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top