2011-08-17 4 views
2

다음과 같은 탐색 기반 앱이 있습니다.UITableView가 특정 위치에 표시되도록하는 방법에 대한 제안 된 방법이 있습니까?

모든 장의 개요가있는 테이블보기가 있습니다. 사용자가 장을 탭하면 책의 내용을 보여주는 다른보기 컨트롤러를 스택에 놓습니다. 텍스트가 많지 않고 이미지가없는 작은 수동 책입니다. 모든 장이 하나의 셀에 표시되며 각 장의 정확한 contentOffset.y를 알고 있습니다.

문제점 : 태핑 된 장으로 시작할 수 없습니다. I는 시도

self.contentOffset = CGPointMake(self.contentOffset.x, targetContentOffsetY); 

:

[self setContentOffset:CGPointMake(self.contentOffset.x, targetContentOffsetY) animated:NO]; 

테이블 뷰가있는 경우와 같이, 원하는 오프셋 해당 점프 내 ReadingTableView의 초기화 방법에

는이 같은 목적 contentOffset 세트 심하게 움직였다. 아주 짧은 시간 동안 빈 테이블 뷰를 볼 수 있습니다. 그런 다음 모든 것이 매우 빠르게 애니메이션으로 이동합니다.

답변

3

UITableView가 init 메소드에서 실제로로드되지 않았기 때문에 초기화 메소드에서 contentOffset을 설정한다고 언급했지만 콘텐츠 크기는 설정되지 않습니다. 그래서 애니메이션이 효과가 없었습니다.

당신이 UIViewController에 나있는 UITableViewController를 사용하는 경우, "setContentOffset : 애니메이션 :"시도의 방법 "viewDidAppear :"방법합니다 (주의는 단어하지 나요)를.

또한 "scrollToRowAtIndexPath : atScrollPosition : animated :"는 UITableView를 스크롤하는 데 좋습니다.

P .: 애니메이션 또한 점프처럼 보일 수 있습니다. 테이블 셀이 매우 느리게로드되는 경우 문제가있는 곳을 잘 모를 경우 테스트를 위해 일시적으로 빈 셀을 사용할 수 있습니다.

3

UIViewControllerviewWillAppear에 contentOffset을 설정하십시오. [UITableView scrollToRowAtIndexPath:도 유용합니다. 픽셀 수 대신 특정 행에 오프셋을 적용하려는 경우입니다. 다시 scrollToRowAtIndexPathviewWillAppear으로 시작하거나 tableView에서 데이터를로드 한 후 언제든지 호출하십시오.

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated 

가 특정 세포의 indexPath 줘 : 왜

0

.

+0

다음은 약간 더 복잡합니다 .-- 나는 셀의 특정 위치에서 멈춰야합니다. 세포 자체가 아닙니다. – openfrog

관련 문제