programing

UITableView 스크롤 위치를 저장하려면 어떻게 해야 합니까?

goodsources 2023. 9. 3. 16:15
반응형

UITableView 스크롤 위치를 저장하려면 어떻게 해야 합니까?

어떤 것을 찾을 수 있는 방법이 있습니까?UITableViewCell스크롤 창의 맨 위에 있습니까?

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

테이블 뷰의 정확한 간격띄우기를 보기만 하면 쉽게 잡을 수 있습니다.contentOffset소유물.수직 스크롤의 경우 다음을 확인합니다.

tableView.contentOffset.y;

승인된 솔루션은 모든 테이블 보기 항목의 크기를 알고 있는 경우에만 작동합니다.자동 크기 조정/추정 크기를 사용하는 경우 항상 해당되는 것은 아닙니다.

한 가지 방법은 첫 번째 표시된 항목을 저장하고 항목으로 스크롤하는 것입니다.

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

savedIndex = tableView.indexPathsForVisibleRows?.first

그런 다음 다음을 수행하여 스크롤합니다.

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

DidLoad(iOS 9 테스트 완료)를 보지 않고 viewWillApear로 로드할 수 있는지 확인합니다.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

반응형