2010-05-08 6 views

답변

146

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

tableView.contentOffset.y; 
+1

스크롤보기의 CGPoint입니다. 어떤 UITableViewCell에 해당하는지 알 수 없습니다. – progrmr

+15

오프셋을 사용하면 셀이 필요하지 않습니다. 보기를 다시 입력 할 때 오프셋을 설정하면됩니다. 그러나 꼭대기에있는 셀을 알아야한다면 다음을 사용하십시오 : [tableView indexPathForRowAtPoint : CGPointMake (0, 0)]; –

+0

contentOffset을 사용하면 앱이 마지막으로 종료되었을 때와 정확히 일치하는 스크롤 위치가 반환됩니다. 감사! 결국 어떤 세포인지 알 필요가 없었습니다. C# 사용자의 – progrmr

2

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

첫 번째로 보이는 항목을 저장하고 스크롤 할 수 있습니다.

당신이 표시되는 첫 번째 항목 indexPath 얻을 수

:

savedIndex = tableView.indexPathsForVisibleRows?.first 

는 다음을 수행하여로 스크롤 : viewDidLoad에 당신이 viewWillAppear에로드 할 수 있는지 확인하지

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

을 (아이폰 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]; 
} 
관련 문제