UITableViewCell
이 스크롤 창 상단에 있는지 확인할 방법이 있습니까?저장할 수 있도록 UITableView 스크롤 위치를 어떻게 얻을 수 있습니까?
나는 앱을 종료 할 때 저장할 수 있도록 현재 스크롤 위치를 얻고 싶습니다. 앱이 시작되면 마지막으로 종료했을 때의 위치로 스크롤하고 싶습니다.
UITableViewCell
이 스크롤 창 상단에 있는지 확인할 방법이 있습니까?저장할 수 있도록 UITableView 스크롤 위치를 어떻게 얻을 수 있습니까?
나는 앱을 종료 할 때 저장할 수 있도록 현재 스크롤 위치를 얻고 싶습니다. 앱이 시작되면 마지막으로 종료했을 때의 위치로 스크롤하고 싶습니다.
contentOffset
속성을 보면 테이블보기의 정확한 오프셋을 쉽게 얻을 수 있습니다. 수직 스크롤은 다음을 참조하십시오.
tableView.contentOffset.y;
허용 된 솔루션은 모든 테이블보기 항목의 크기를 알고있는 경우에만 작동합니다. 자동 크기 조정/예상 크기가 항상 사실은 아닙니다.
첫 번째로 보이는 항목을 저장하고 스크롤 할 수 있습니다.
당신이 표시되는 첫 번째 항목 indexPath 얻을 수:
savedIndex = tableView.indexPathsForVisibleRows?.first
는 다음을 수행하여로 스크롤 : viewDidLoad에 당신이 viewWillAppear에로드 할 수 있는지 확인하지
tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)
을 (아이폰 OS 9 테스트) . 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];
}
스크롤보기의 CGPoint입니다. 어떤 UITableViewCell에 해당하는지 알 수 없습니다. – progrmr
오프셋을 사용하면 셀이 필요하지 않습니다. 보기를 다시 입력 할 때 오프셋을 설정하면됩니다. 그러나 꼭대기에있는 셀을 알아야한다면 다음을 사용하십시오 : [tableView indexPathForRowAtPoint : CGPointMake (0, 0)]; –
contentOffset을 사용하면 앱이 마지막으로 종료되었을 때와 정확히 일치하는 스크롤 위치가 반환됩니다. 감사! 결국 어떤 세포인지 알 필요가 없었습니다. C# 사용자의 – progrmr