Development Tip

UITableView 스크롤 위치를 가져 와서 저장할 수 있습니까?

yourdevel 2020. 10. 31. 10:12
반응형

UITableView 스크롤 위치를 가져 와서 저장할 수 있습니까?


UITableViewCell스크롤 창 상단에있는 것을 찾을 수있는 방법이 있습니까?

앱이 종료 될 때 저장할 수 있도록 현재 스크롤 위치를 가져오고 싶습니다. 앱이 시작되면 마지막으로 종료 된 위치로 스크롤하고 싶습니다.


contentOffset속성 을 살펴보면 테이블보기의 정확한 오프셋을 쉽게 얻을 수 있습니다 . 수직 스크롤의 경우 다음을 참조하십시오.

tableView.contentOffset.y;

허용되는 솔루션은 모든 테이블보기 항목의 크기를 알고있는 경우에만 작동합니다. 항상 사실이 아닌 자동 크기 조정 / 예상 크기를 사용합니다.

한 가지 대안은 첫 번째 표시 항목을 저장하고 스크롤하는 것입니다.

다음을 사용하여 첫 번째 표시 항목 indexPath를 가져올 수 있습니다.

savedIndex = tableView.indexPathsForVisibleRows?.first

그런 다음 다음을 수행하여 스크롤하십시오.

tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)

viewDidLoad (테스트 된 iOS 9)가 아닌 viewWillAppear에서로드 할 수 있는지 확인하십시오. ViewWillAppear는 뷰가 레이아웃을 완료했을 때입니다. 결과에 차이가 있습니다.

-(void) viewWillAppear:(BOOL)animated {
    NSUserDefaults *lightData = [NSUserDefaults standardUserDefaults];
    [self.tableView setContentOffset:CGPointMake(0, [lightData floatForKey:@"yValue"])];
}

-(void) viewWillDisappear:(BOOL)animated {
    NSUserDefaults *lightData = [NSUserDefaults standardUserDefaults];
    [lightData setFloat:self.tableView.contentOffset.y forKey:@"yValue"];
    [lightData synchronize];
}

참고 URL : https://stackoverflow.com/questions/2795900/how-can-i-get-the-uitableview-scroll-position-so-i-can-save-it

반응형