2013-08-05 23 views
12

Czy można przewinąć do sekcji zamiast do wiersza? Jeśli tak to jak?UITableView Przewiń do sekcji

Przy okazji. Używam metody usuwania pływających nagłówków.

Oto kod, którego używam do przejścia do wybranych sekcji pierwszego rzędu.

if (self.openSectionIndex != NSNotFound) { 
    [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:section] atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
} 

jest to kod, aby usunąć pływających nagłówki

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (self.openSectionIndex != NSNotFound) { 
     if (scrollView.contentOffset.y<=DEFAULT_HEADER_HEIGHT&&scrollView.contentOffset.y>=0) { 
      scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); 
     } else if (scrollView.contentOffset.y>=DEFAULT_HEADER_HEIGHT) { 
      scrollView.contentInset = UIEdgeInsetsMake(-DEFAULT_HEADER_HEIGHT, 0, 0, 0); 
     } 
    } 
} 

to jest w jakiś sposób to, co chcę, ale ja raczej też pokazać nagłówek.

W tej chwili nagłówek jest ukryty poza ekranem na górze.

+0

Gdzie w sekcji chcesz przewinąć? Twoje pytanie nie jest zbyt jasne. –

+0

Chcę przewinąć do początku sekcji. Przepraszam, trochę to wyjaśni. – chrs

+0

A kod, który napisałeś, nie działa? Wydaje się całkiem proste, że przewiniesz do wiersza 0 tej sekcji i umieścisz go na górze. –

Odpowiedz

7

Zamiast scrollToRowAtIndexPath, użyj scrollRectToVisible. Dokładne pozycjonowanie można uzyskać, przekazując wartość rect z rozmiarem, który jest taki sam, jak widok tabeli.

Jeśli chcesz, aby nagłówek był umieszczony dokładnie u góry, użyj ramki nagłówka, ustawiając wysokość jako wysokość widoku tabeli, a następnie przenieś ją do scrollRectToVisible.

Powiązane problemy