2013-09-06 2 views
2

Я пытаюсь добавить еще 10 записей в UITableView, когда пользователь прокручивает нижнюю часть таблицыView. Я использую scrollViewDidEndDecelerating: и затем -(void)getFeed:, чтобы получить данные и сохранить их в NSMutableArray под названием moreitems. moreitems следует добавить к self.listingNodesArray, а затем добавить в нижнюю часть таблицы вместе с записями, которые уже есть в таблице.Как добавить еще 10 записей в `UITableView`, когда пользователь прокручивает нижнюю часть таблицыView

Я думаю, что моя проблема кроется в методе insertRowsAtIndexPaths:. Я не уверен, что положить после этого. На данный момент приложение падает на [self.tableView endUpdates];

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
    { 

     NSLog(@"scrollViewDidEndDecelerating"); 

     float endScrolling = scrollView.contentOffset.y + scrollView.frame.size.height; 
     if (endScrolling >= scrollView.contentSize.height) 
     { 
      index ++; 
      [self getFeed:index]; 
     } 
    } 

- (void)getFeed:(NSInteger) pageNumber 
{ 

    NSError *requestError = nil; 

    NSString *savedValue = [[NSUserDefaults standardUserDefaults] stringForKey:@"token"]; 

    NSLog(@"countpage %d",index); 

    NSString *stringWithToken = [NSString stringWithFormat:@"%@&%@&page=%d&token=%@",kURL,city_slug, pageNumber, savedValue]; 

    NSLog(@"string token is %@", stringWithToken); 

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL 
                  URLWithString:stringWithToken]]; 

    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&requestError]; 

    NSError *jsonParsingError = nil; 

    if (requestError) { 
     NSLog(@"sync. request failed with error: %@", requestError); 
    } 

    else { 
     // handle data 
     NSDictionary *publicData = [NSJSONSerialization JSONObjectWithData:response options:0 error:&jsonParsingError]; 
     moreItems = [publicData objectForKey:@"data"]; 

    } 

    NSLog(@"moreitems data output is %@",moreItems); 

    [self.listingNodesArray addObjectsFromArray:moreItems]; 

    int newRowIndex = [self.listingNodesArray count]; 

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:newRowIndex+1 inSection:0]; 
    NSArray *indexPaths = [NSArray arrayWithObject:indexPath]; 

    [self.tableView beginUpdates]; 

    [self.tableView insertRowsAtIndexPaths:indexPaths 
        withRowAnimation:UITableViewRowAnimationBottom]; 
    [self.tableView endUpdates]; 

    NSLog(@"updated self.listingNodesArray %@ and count is %d",self.listingNodesArray, [self.listingNodesArray count]); 

} 

спасибо за любую помощь в этом.

+0

Дубликат Que: http://stackoverflow.com/questions/5137943/how-to-know-when-uitableview-did -scroll-to-bottom-in-iphone – Mrunal

+2

В обеих вставках вы вставляете пустой массив. Это твой крах. И вам не нужно перезагружать данные. – Desdenova

+1

http://stackoverflow.com/questions/6023683/add-rows-to-uitableview-when-scrolled-to-bottom –

ответ

0

Чтобы добавить больше контента в массив, вы можете проверить cellForRow, если indexPath.row равен числу moreitems.count.

Например:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     CustomCellEventsWithCategoryTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 

    if (indexPath.row == [events count]) { 

     // here you can call the method that appends data to the mutable array 
    } 

     return cell; 
} 

Я надеюсь, что это поможет решить проблему