2012-05-01 3 views
6

보기 컨트롤러가로드 될 때 특정 행으로 스크롤되도록 테이블보기를 설정했습니다. 내가있는 viewDidLoad 방법이 코드를 넣어, 그리고 내가 그것을 기대하는 방법을 작동합니다스크롤을 움직이게하지 않으면 내 UITableView가 스크롤되지 않는 이유는 무엇입니까?

[thisTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:16 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];

을 그러나, 나는 animated:NO에 마지막 비트는, 전혀 스크롤하지 않음을 변경하는 경우. 애니메이션을 사용하는 것이 좋습니다. 그러나 애니메이션이 NO로 설정된 경우 스크롤하지 않는 이유는 무엇입니까?

답변

7

viewDidLoad에서 tableView가 비어 있으므로 행 16으로 스크롤 할 수 없습니다.

animated : YES를 사용하면보기가 표시 될 때까지 애니메이션이 지연되어 테이블이 채워집니다.

테이블에 이미 데이터가 채워져있을 때 viewDidAppear (또는 viewWillAppear)에서 이러한 종류의 코드를 사용할 수 있습니다. 이것은 뷰가 표시 될 때마다 호출합니다 (일부 논리를 추가하지 않는 한).이 값이 요구 사항을 충족하는지 확실하지 않습니다 ...

+0

Perfect. 그것은 내가 원했던대로 작동합니다. 또한 viewDidLoad가 끝날 때까지 tableView가 실제로로드되지 않는다는 것을 알게됩니다. 감사합니다 –

+0

또한, 쪽지로, 나는 테이블보기에서 reloadData를 호출하여 viewDidLoad에서 데이터를로드하는 테이블을 강제로. viewDidLoad에서 애니메이션없이 스크롤이 가능합니다. –

+0

정적 테이블 인 경우 그 이유는 무엇입니까? 그렇지 않으면 그럴 수 없습니다. 또한 viewDidAppear을 사용하여 디스플레이 글리치가 표시되는 경우 대신 viewWillAppear을 사용할 수 있습니다. –

관련 문제