2010-03-01 8 views
12

UITableView를 애니메이션이있는 특정 위치로 스크롤하는 방법은 무엇입니까? iPhone SDK - 애니메이션으로 프로그래밍 방식으로 UITableView를 스크롤하는 방법은 무엇입니까?

은 현재 내가있는 위치로 이동이 코드를 사용하고 있습니다 :

//tableController -> viewDidLoad 
[self.tableView reloadData]; 
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0]; 
[self.tableView scrollToRowAtIndexPath:indexPath 
         atScrollPosition:UITableViewScrollPositionTop 
           animated:YES]; 

이 코드의 문제는 테이블이 바로 어떤 애니메이션없이 올바른 위치로 이동한다는 것이다. 애니메이션을 활성화하거나 재생 시간을 설정할 수있는 방법이 있습니까?

도움 주셔서 감사합니다.

답변

0

I가 당신이 조사하기위한 두 가지 제안 :

  1. 당신은 시뮬레이터 또는 아이폰 자체에서 응용 프로그램을 실행하고 있습니까? 시뮬레이터에서 일부 애니메이션이 다르게 동작하는 것을 보았습니다.

  2. scrollToRowAtIndexPath를 호출 할 수 있습니까? atScrollPosition : 빠르게 연이어 두 번 애니메이션이 적용될 수 있습니까? 이것은 애니메이션을 혼란스럽게 할 수 있습니다. 주어진 이벤트를 처리하는 동안이 함수를 한 번만 호출해야합니다.

+0

답장을 보내 주셔서 감사합니다. 장치에서 코드를 실행하고 viewDidLoad 메서드에서이 코드를 호출합니다. – dan

+0

어떤 이유로 든 뷰 초기화의 일부이기 때문에 viewDidLoad에서 애니메이션을 시작할 수 없습니다. 나는 왜 그런 일이 일어날 지 정확히 알지 못하지만 그럴듯하게 들린다. NSRunLoop의 performSelector를 사용하여 이벤트 일정을 조정하고 호출 할 때 스크롤하십시오. – richb

5

reloadData 전화를 사용해보세요. 질문을 올바르게 이해하고 있고 viewDidLoad에 있다면 어쨌든 전화 할 필요가 없습니다.

또한보기 컨트롤러를 끝내면 애니메이션 스크롤을 얻을 수 없습니다. viewDidLoad이 호출 된 시간과 애니메이션이 시작될 때 사이에 지연 시간 (4 분의 1 초가 잘 작동하는 것으로 나타났습니다)을 삽입해야합니다. 이 같은 검증 할 수 있습니다,

-(void) viewDidAppear:(BOOL)animated{ 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:n inSection:0]; 
    [self.tableView scrollToRowAtIndexPath:indexPath 
        atScrollPosition:UITableViewScrollPositionTop 
          animated:YES]; 

} 

이가 한 번만 호출 할 수 있는지 :

23

그것은 나를 위해 잘 작동

if(!isInitialized){ 
    isInitialized = YES; 
    .... 
} 
0

내가 너무 늦게 어쩌면 알고,하지만 어쩌면 다른 사람에게 도움이 될 수도 있습니다. 으로 테이블을 스크롤 할 수 있습니다. 이제 테이블을 스크롤 할 수 있습니다.

관련 문제