2010-07-09 8 views
0

는 I (예를 들어, 제 2 섹션의 첫 번째 행) 제 이외의 행 내 jQuery과초기 스크롤 위치를 설정할 수있다. 내보기 컨트롤러의 의 viewDidLoad에서의 비정상적인 동작 :

나는 쓰기 :

- (void)viewDidLoad 
{ 
    // self.view is a container view, not UITableView 
    [super viewDidLoad]; 
    [table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] 
     atScrollPosition:UITableViewScrollPositionTop animated:NO]; 
} 

화면로드, 스크롤 위치를 즉시 설정 하지입니다. 그렇지 않은 경우 애니메이션 매개 변수가 YES로 설정된 경우 위치는 애니메이션없이 즉시 설정됩니다. 무슨 일 이니?

UITableView의 초기 행 위치를 설정하는 올바른 방법은 무엇입니까?

답변

0

최고의 장소는 ViewDidAppear이어야합니다. 또한 cellWillDisplay에서 scroll 메서드를 호출하여 확인해야합니다. 스크롤 방법을 호출하기 전에 indexPath를 확인하십시오.

0

어둠 속에서 그냥 쐈지 만이 코드를 viewDidAppear {}에 넣으려고 했습니까?

+0

정확히 같은 결과입니다. – alexey

0

테이블이 가장 가능성이 그때까지 채워져 있지 않기 때문에이 viewDidLoad 또는 viewWillAppear에서 작동하지 않습니다 테이블 일단 대신 NSTimer에 넣어보십시오

(적어도 내 경우에는이 아니었다) 로드 및 호출.

별도로이 코드 (애니메이션 포함)를 탐색 막대 버튼 항목에 넣었고 테이블로드가 완료된 후 매우 잘 작동했습니다.

+0

스크롤은 viewDidLoad에서도 작동하지만 즉시 스크롤하지는 않습니다. NSTimer는 일종의 해킹입니다. 테이블에로드 이벤트가 콜백이 있습니까? – alexey

+0

수정하면 스크롤 할 데이터가 존재할 때까지 스크롤되지 않습니다. 테이블 뷰 데이터 나 이미지가 많은 프로젝트에서는 2 초 이상 걸리고'viewDidLoad'가 이미 호출되었습니다. 불행하게도, 테이블이 로딩 될 때 'UITableViewDelegate' 메소드에는 아무것도 없다. 여기에서 자세한 정보를 찾을 수 있습니다. http://stackoverflow.com/questions/1483581/get-notified-when-uitableview-has-finished-asking-for-data – iwasrobbed

관련 문제