2013-08-05 1 views
12

행 대신 섹션으로 스크롤 할 수 있습니까? 그렇다면 어떻게?UITableView 섹션으로 스크롤

btw. 플로팅 헤더를 제거하는 방법을 사용하고 있습니다.

다음은 선택한 섹션의 첫 번째 행으로 이동하는 데 사용하는 코드입니다.

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

이 내가 원하는 것을 어떻게 든 떠있는 헤더

- (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); 
     } 
    } 
} 

을 제거하는 코드입니다하지만 난 오히려 또한 헤더를 보여줄 것입니다.

지금은 머리글이 화면 상단에 숨겨져 있습니다.

+0

여기서 섹션을 스크롤 하시겠습니까? 귀하의 질문은 명확하지 않습니다. –

+0

섹션의 맨 위로 스크롤하고 싶습니다. 죄송합니다, 조금 더 명확하게 해드릴 것입니다. – chrs

+0

그리고 작성한 코드가 작동하지 않습니까? 꽤 똑바로 앞으로 그 부분의 행 0으로 스크롤하여 맨 위에 놓는 것 같습니다. –

답변

7

scrollToRowAtIndexPath 대신 scrollRectToVisible을 사용하십시오. 테이블보기와 동일한 크기의 rect를 전달하여 정확한 위치 지정을 얻을 수 있습니다.

머리글을 정확히 배치하려면 머리글 프레임을 사용하고 높이를 테이블보기의 높이로 설정 한 다음 scrollRectToVisible으로 전달하십시오.