2014-09-18 2 views
0

Я создаю статью, читающую приложение. Я использую стороннюю библиотеку AFNetworking для извлечения данных JSON в UITableView.Вызов метода scrollviewdidscroll в uitableview?

Let say Json link www.example.com & страница = 1 дает 1-10 статей и www.example.com & страница = 2 дает11-20 статей и так далее.

Я реализовал разбиение на страницы и scrollViewDidScroll метод, когда пользователь прокручивает его, дает следующую десятку статей.

У меня возникла проблема при запуске приложения и запуске метода прокруткиViewViewDidScroll с помощью UITableView трижды, но ожидаемый вызов один раз.

Я использую переменную increment для разбивки на страницы в scrollViewDidScroll, так как я говорю, что он вызывает три раза, а значение x переходит в 3 и дает 30 статей.

При повторном прокрутке пользователя он дает следующие 30 articles.i'm не в состоянии выяснить, почему метод scrollViewDidScroll называется три раза при запуске приложения.

это мой код:

 - (void)viewDidLoad 
      { 
       [super viewDidLoad]; 
       tempJson = [[NSMutableArray alloc] init]; 
       [self loadNinjas]; 
      } 

      - (void)loadNinjas { 

      NSString *jsonLink=[NSString stringWithFormat:@"www.example.com&page=%d",x]; 
      NSURL *url = [[NSURL alloc] initWithString:jsonLink]; 
      NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
      AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
    operation.responseSerializer = [AFJSONResponseSerializer serializer]; 
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSArray *jsonArray = (NSArray *)responseObject; 
     for (NSDictionary *dic in jsonArray) { 
     Json *json = [[Json alloc] initWithDictionary:dic]; 
     [tempJson addObject:json]; 
     } 
      self.jsons = [[NSArray alloc] initWithArray:tempJson]; 
      [self.tableView reloadData]; 
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
      UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" 
               message:[error localizedDescription] 
               delegate:nil 
             cancelButtonTitle:@"Ok" 
             otherButtonTitles:nil]; 
      [alertView show]; 
      }]; 
     [operation start]; 
     } 

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
     { 
     return self.jsons.count ; 

     } 

     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
     { 
      static NSString *Cellidentifier1 = @"ysTableViewCell"; 

      ysTableViewCell *cell1 = [tableView 

      dequeueReusableCellWithIdentifier:Cellidentifier1 forIndexPath:indexPath]; 
      cell1.TitleLabel1.text = [self.jsons[indexPath.row] title]; 

      cell1.AuthorLabel1.text = [self.jsons[indexPath.row] author]; 
      [cell1.ThumbImage1 setImageWithURL:[NSURL URLWithString: 

      [self.jsons[indexPath.row] a_image]]]; 
      return cell1;} 
     - (void)scrollViewDidScroll: (UIScrollView*)scroll { 

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

      self.tableView.contentInset = UIEdgeInsetsMake(65, 0, 0, 0); 
      if (maximumOffset - currentOffset <= -60.0) { 
      x++; 

      [self loadNinjas]; 
      [self.tableView addInfiniteScrollingWithActionHandler:^{ 
      }]; 
      [self.tableView reloadData]; 
     } 
     } 

ответ

5

- (void)scrollViewDidScroll: (UIScrollView*)scroll получает называется CUPLE раз при прокрутке

Вы должны лучше использовать:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 

ИЛИ

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView 
    willDecelerate:(BOOL)decelerate 
+0

спасибо, что он работает отлично. - (void) scrollViewDidEndDragging: (UIScrollView *) scrollView willDecelerate: (BOOL) замедляется – Daljeet

Смежные вопросы