2014-09-10 9 views
0

기사를 읽는 앱을 작성하고 있습니다. 기사 목록은 UITableViewController입니다. scrollViewDidScroll: 메소드의 첫 번째 셀을 사용하면 UINavigationBar 아래에 표시됩니다.
그러나이 코드를 주석 처리하면 UINavigationBar 뒤에 정확하게 첫 번째 셀이 표시됩니다.scrollViewDidScroll : 메서드를 구현하는 방법은?

- (void)scrollViewDidScroll: (UIScrollView*)scroll { 
    // UITableView only moves in one direction, y axis 

    CGFloat currentOffset = scroll.contentOffset.y; 
    CGFloat maximumOffset = scroll.contentSize.height - scroll.frame.size.height; 

    // Change 10.0 to adjust the distance from bottom 
    if (maximumOffset - currentOffset <= -60.0) { 
     x++; 
     [self LoadMore]; 

     [self.tableView addInfiniteScrollingWithActionHandler:^{ 

     }]; 

     [self.tableView reloadData];  
    } 
} 
+0

최대 오프셋 값을 확인하십시오. 어쩌면 scrollViewDidScroll 메서드에서 귀하의 논리는 귀하의 tableView Y 축 – nikhil84

+0

@ walle84 덕분에, 나는 2072를 제공하는 maximumOffset의 값을 인쇄하는 데 사용하고 그것을 스크롤 증가합니다. – Daljeet

+0

오신 것을 환영합니다! – nikhil84

답변

0

이 답변이 문제에 대한 해결책이 될 수 없습니다 :

여기 내 코드입니다. 이는 문제의 원인이 될 수있는 코드의 주요 흐름을 지적하기위한 것입니다.

데이터 [self LoadMore];[self.tableView reloadData];을 직접 scrollViewDidScroll: 방법으로 다시로드하면 안됩니다. 이렇게하면 스크롤 할 때 메서드가 여러 번 호출됩니다.

그리고 무한 로딩을 잘못 구현했다고 생각합니다.

이 코드

일부 초기화 방법 (예를 들어,있는 viewDidLoad)

스크롤로 더 많은 항목을로드하기 위해 기획하는 경우
[tableView addInfiniteScrollingWithActionHandler:^{ 
    [self LoadMore]; 
    [self.tableView reloadData]; 
    // call [tableView.infiniteScrollingView stopAnimating] when done 
}]; 

, 난 당신이 모든 scrollViewDidScroll:를 사용할 필요가 있다고 생각하지 않습니다 내부에 배치해야합니다. 위의 코드를 viewDidLoad: 안에 넣으면 모든 것이 작동합니다. 별도로로드되는 항목의 수를 추적해야합니다. 희망이 도움이 될 것입니다. :)

관련 문제