iPhone SDK 3.1.3을 사용하고 있습니다. 다른 컨트롤러에서 데이터를 가져 오는 UITableViewController
있습니다. 테이블 뷰는 메인 뷰에 서브 뷰로 추가되지만 프레임은 보이지 않도록 설정됩니다. 테이블 뷰 프레임이 업데이트되고 단추를 두드리면 기본보기 위로 슬라이드됩니다.UITableView 특정 위치로 스크롤
테이블보기가 나타나고 마지막 행으로 스크롤됩니다. 마지막 행을 선택하면 더 많은 데이터가있는 표가 다시로드됩니다. 테이블이 더 많은 데이터로 업데이트됩니다. 스크롤 위치가 항상 맨 위를 제외하고는 모두 잘 작동합니다.
더 많은 데이터를로드하기 위해 클릭 한 마지막 행으로 스크롤 위치가 필요합니다. 스크롤 위치를 저장하고 더 많은 데이터를로드 한 후 다음 코드를 호출합니다. 문제없이 실행되지만 스크롤 위치는 항상 맨 위입니다.
[theTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:savedScrollPosition inSection:0] atScrollPosition:savedScrollPosition animated:NO];
위의 내용은 효과가없는 것으로 보입니다. ViewWillAppear:
ViewDidAppear:
이 발생하지 않으며보기 컨트롤러가 코드로 인스턴스화 된 경우 이러한 이벤트는 발생하지 않는다고 전합니다. 내가 클릭 한 행에 있도록 테이블을 다시로드 한 후 ([theTableView reloadData]
) 스크롤 위치를 설정하는 방법과시기를 알아내는 데 도움이됩니다. 즉 실제 코드이고 가정 theTableView가 nil이 아닌 경우
코드는 scrollToRowAtIndexPath이기 때문에 "에 ... 응답하지 않을 수 있습니다"라는 경고를 받고해야, 테이블보기를 & 스크롤
////performAction will notify the tableviewcontroller which will result in didPerformAction being called
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == lastRow)
{
savedScrollPosition = lastRow;
//perform the action
[controller performAction];
}
}
- (void) didPerformAction:(NSNotification *)obj
{
[theTableView reloadData];
[theTableView
scrollToRowAtIndexPath: [NSIndexPath indexPathForRow:savedScrollPosition inSection:0]
atScrollPosition:UITableViewScrollPositionBottom
animated:NO];
}
이 명령문의 savedScrollPosition은 무엇입니까? –