2014-12-23 2 views
1

특정 인덱스 행 위에 스크롤하는 것을 허용하는 UITableView는 어떻게 가질 수 있습니까? 예를 들어, 주어진 시간에 뷰에 단 5 개만 표시되는 1에서 100까지의 행이있는 경우 사용자가 행 1 ~ 50 사이를 스크롤 할 수 있지만 행 50이 표시되면 더 이상 스크롤하지 못하도록하고 싶습니다.UITableView가 특정 지점 아래로 스크롤하지 못하도록합니다.

+0

이 데이터 소스에 대한 간단한을하지 않을까요 행의 수를 잘못보고 단지에? – Linuxios

답변

3

contentInsetUITableView 일 수 있습니다. 그냥 우리가 내용의 크기를 축소하는 원인, 마이너스 값을 설정하는 기억

CGFloat insetTop = topAllowedRow * c_CELL_HEIGHT * -1; 
CGFloat insetBottom = bottomAllowedRow * c_CELL_HEIGHT * -1; 
[self.tableView setContentInset:UIEdgeInsetsMake(insetTop, 0, insetBottom, 0)]; 

다른 솔루션을 구현하는 것입니다 UIScrollViewDelegate 방법 scrollViewDidScroll:scrollView.contentOffset가 너무 큰 경우, 해당 사용자가 할 수있는 최대 값으로 다시 설정

- (void)scrollViewDidScroll:(UIScrollView*)scrollView { 
    CGPoint scrollViewOffset = scrollView.contentOffset; 
    if (scrollViewOffset.x > MAX_VALUE) { 
     scrollViewOffset.x = MAX_VALUE; 
    } 
    [scrollView setContentOffset:scrollViewOffset]; 
} 

첫 번째 해결책으로 활용하고 UIScrollView가 (단지 풀을 새로 고치는에서 같은) 수신 거부를 관리하기 때문에 단점을 모두 가지고에 스크롤합니다. 더 자연스럽고 HIG 호환이지만, 특정 행 아래를 보지 못하도록 사용자가 실제로 필요한 경우 대리자 메서드를 사용하십시오.

0

UITableView는 UIScrollView의 하위 클래스입니다. 즉, UIScrollViewDelegate의 모든 방법을 사용할 수 있습니다. 다음 대리자 메서드에 scrollView.contentOffset 로직을 추가하십시오 :

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; 
관련 문제