Ios 将新行添加到uitableview的末尾

Ios 将新行添加到uitableview的末尾,ios,uitableview,Ios,Uitableview,我试图在用户滚动到视图末尾后添加新闻行 前10行来自第一页获取,然后我重新加载我的表 这是第一页代码: SubViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"Subview"]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{

我试图在用户滚动到视图末尾后添加新闻行

前10行来自第一页获取,然后我重新加载我的表

这是第一页代码:

SubViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"Subview"];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),
                   ^{
                       ParseOperation *p = [[ParseOperation alloc]init];

                       p.code = selection_code.text;
                       [p main];
                   dispatch_async(dispatch_get_main_queue(), ^(void)
                                       {


                                          svc.entries = p.appRecordList;
                                          [svc.tableView reloadData];

                                      });
                   });

    [svc setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
    [self.navigationController pushViewController:svc animated:YES];
对于第二页,我发现滚动条末尾有以下内容:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
......

   if ((unsigned long)indexPath.row == [self.entries count] - 1){
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),
                       ^{
                           ParseOperation *p = [[ParseOperation alloc]init];
                           AppRecord *appRecord = [self.entries objectAtIndex:indexPath.row];


                           p.lastid = appRecord.ids;
                           [p main];
                           dispatch_async(dispatch_get_main_queue(), ^(void)
                                          {

                                              SubCategoryViewController *svc =[self.storyboard instantiateViewControllerWithIdentifier:@"SubView"];

                                               svc.entries = p.appRecordList;
                                              [svc.tableView reloadData];

                                          });
                       });

    }
    return cell;
搜索结果良好,并获取了新的rss项目。但这张桌子并不令人耳目一新

编辑(添加numberOfRowInSection代码)


可以使用insertAtIndexPath方法在UITableView的最后一个对象下方插入新行

  -(void)insertRowInTable:(NSArray*)DictOfWebData{
    NSMutableArray *mutArrOfIndexPath=[[NSMutableArray alloc]init];
        int count=arrOfTbleView.count;
        for (NSDictionary *dict in [DictOfWebData objectForKey:@"link"]) {
            [arrOfTbleView addObject:dict];
            [mutArrOfIndexPath addObject:[NSIndexPath indexPathForRow:count inSection:0]];
            count++;

        }
        [_tblVwOFWebData beginUpdates];
        [_tblVwOFWebData insertRowsAtIndexPaths:mutArrOfIndexPath withRowAnimation:UITableViewRowAnimationFade];
        [_tblVwOFWebData endUpdates];
       }
并从ScrollViewDiEndDraging方法调用此方法,在调用此方法之前,必须从webservice获取数据


我想这会对你有帮助

对于UITableView,可以使用insertAtIndexPath方法在tableView的最后一个对象下方插入新行

  -(void)insertRowInTable:(NSArray*)DictOfWebData{
    NSMutableArray *mutArrOfIndexPath=[[NSMutableArray alloc]init];
        int count=arrOfTbleView.count;
        for (NSDictionary *dict in [DictOfWebData objectForKey:@"link"]) {
            [arrOfTbleView addObject:dict];
            [mutArrOfIndexPath addObject:[NSIndexPath indexPathForRow:count inSection:0]];
            count++;

        }
        [_tblVwOFWebData beginUpdates];
        [_tblVwOFWebData insertRowsAtIndexPaths:mutArrOfIndexPath withRowAnimation:UITableViewRowAnimationFade];
        [_tblVwOFWebData endUpdates];
       }
并从ScrollViewDiEndDraging方法调用此方法,在调用此方法之前,必须从webservice获取数据


我想这会对你有帮助

对于UITableView,可以使用insertAtIndexPath方法在tableView的最后一个对象下方插入新行

  -(void)insertRowInTable:(NSArray*)DictOfWebData{
    NSMutableArray *mutArrOfIndexPath=[[NSMutableArray alloc]init];
        int count=arrOfTbleView.count;
        for (NSDictionary *dict in [DictOfWebData objectForKey:@"link"]) {
            [arrOfTbleView addObject:dict];
            [mutArrOfIndexPath addObject:[NSIndexPath indexPathForRow:count inSection:0]];
            count++;

        }
        [_tblVwOFWebData beginUpdates];
        [_tblVwOFWebData insertRowsAtIndexPaths:mutArrOfIndexPath withRowAnimation:UITableViewRowAnimationFade];
        [_tblVwOFWebData endUpdates];
       }
并从ScrollViewDiEndDraging方法调用此方法,在调用此方法之前,必须从webservice获取数据


我想这会对你有帮助

对于UITableView,可以使用insertAtIndexPath方法在tableView的最后一个对象下方插入新行

  -(void)insertRowInTable:(NSArray*)DictOfWebData{
    NSMutableArray *mutArrOfIndexPath=[[NSMutableArray alloc]init];
        int count=arrOfTbleView.count;
        for (NSDictionary *dict in [DictOfWebData objectForKey:@"link"]) {
            [arrOfTbleView addObject:dict];
            [mutArrOfIndexPath addObject:[NSIndexPath indexPathForRow:count inSection:0]];
            count++;

        }
        [_tblVwOFWebData beginUpdates];
        [_tblVwOFWebData insertRowsAtIndexPaths:mutArrOfIndexPath withRowAnimation:UITableViewRowAnimationFade];
        [_tblVwOFWebData endUpdates];
       }
并从ScrollViewDiEndDraging方法调用此方法,在调用此方法之前,必须从webservice获取数据


我想这会对你有帮助

代码对我来说没有完全意义,看起来您有两个不同的类,
子视图控制器
子类别视图控制器
,哪一个包含tableView?您正在用标识符“SubView”实例化这两个视图。在我看来,您可以删除整个子类别ViewController类,并且只使用子ViewController。不过我可能误解了他们的目的

无论哪种方式,在您的
cellforrowatinexpath
-方法中,您都在实例化一个新的空视图控制器。 从内部查看您自己的代码
cellForRow..
此处:

SubCategoryViewController *svc =[self.storyboard 
                         instantiateViewControllerWithIdentifier:@"SubView"];
svc.entries = p.appRecordList;                
[svc.tableView reloadData];
这段代码的作用是实例化一个新的
子类别viewcontroller
,也称为“svc”。它与当前的视图控制器无关。它是另一个,具有自己的表视图。您正在将新数据推送到一个新的、不可见的视图控制器,并且您从未使用过它。
[…重新加载数据]
之后,新的视图控制器将被删除

在我看来,您应该使用
[self..]
而不是新的、无用的
svc

请尝试以下操作(并删除子类别实例化),而不是上面的代码:

请记住,此代码将用新数据替换当前
self.entries
中的数据。如果新数据是另一个页面,则应首先追加数据,否则表中的数据将始终为10行。 我不知道对象
条目
(您的数据源)是什么类型的,所以我无法告诉您如何附加数据。如果它是一个
NSArray
,您可以执行以下操作:

NSArray *temp = [self.entries arrayByAddingObjectsFromArray:p.appRecordList];
self.entries = temp;
如果它是一个
NSMutableArray
,您只需转到
[self.entries addObjectsFromArray:p.appRecordList]。如果您正在使用其他方法,我相信也会为它们添加一些附加方法


注意:如果我对
子视图..
子类别视图..
有错误,请评论两者之间的区别,我会尝试找出答案。

代码对我来说没有完全意义,看起来您有两个不同的类,
子视图控制器
子类别视图控制器
,哪个包含tableView?您正在用标识符“SubView”实例化这两个视图。在我看来,您可以删除整个子类别ViewController类,并且只使用子ViewController。不过我可能误解了他们的目的

无论哪种方式,在您的
cellforrowatinexpath
-方法中,您都在实例化一个新的空视图控制器。 从内部查看您自己的代码
cellForRow..
此处:

SubCategoryViewController *svc =[self.storyboard 
                         instantiateViewControllerWithIdentifier:@"SubView"];
svc.entries = p.appRecordList;                
[svc.tableView reloadData];
这段代码的作用是实例化一个新的
子类别viewcontroller
,也称为“svc”。它与当前的视图控制器无关。它是另一个,具有自己的表视图。您正在将新数据推送到一个新的、不可见的视图控制器,并且您从未使用过它。
[…重新加载数据]
之后,新的视图控制器将被删除

在我看来,您应该使用
[self..]
而不是新的、无用的
svc

请尝试以下操作(并删除子类别实例化),而不是上面的代码:

请记住,此代码将用新数据替换当前
self.entries
中的数据。如果新数据是另一个页面,则应首先追加数据,否则表中的数据将始终为10行。 我不知道对象
条目
(您的数据源)是什么类型的,所以我无法告诉您如何附加数据。如果它是一个
NSArray
,您可以执行以下操作:

NSArray *temp = [self.entries arrayByAddingObjectsFromArray:p.appRecordList];
self.entries = temp;
如果它是一个
NSMutableArray
,您只需转到
[self.entries addObjectsFromArray:p.appRecordList]。如果您正在使用其他方法,我相信也会为它们添加一些附加方法


注意:如果我对
子视图..
子类别视图..
有错误,请评论两者之间的区别,我会尝试找出答案。

代码对我来说没有完全意义,看起来您有两个不同的类,
子视图控制器
子类别视图控制器
,哪个包含tableView?您正在用标识符“SubView”实例化这两个视图。在我看来,您可以删除整个子类别ViewController类,并且只使用子ViewController。不过我可能误解了他们的目的

要么wa