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