gpt4 book ai didi

ios - 将新行添加到 uitableview 的末尾

转载 作者:行者123 更新时间:2023-11-28 20:05:39 25 4
gpt4 key购买 nike

我试图在用户滚动到 View 末端后添加新闻行。

前 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 代码)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSUInteger count = [self.entries count];

// if there's no data yet, return enough rows to fill the screen
if (count == 0)
{
return kCustomRowCount;
}
return count;
}

最佳答案

代码对我来说没有完全意义,看起来你有两个不同的类,SubViewControllerSubCategoryViewController,哪个包含 tableView?您正在使用标识符“SubView”实例化两者。在我看来,您可以删除整个 SubCategoryViewController 类,并且只使用 SubViewController。不过,我可能会误解他们的目的。

无论哪种方式,在您的 cellForRowAtIndexPath 方法中,您都在实例化一个新的空 View Controller 。从 cellForRow.. 内部查看您自己的代码:

SubCategoryViewController *svc =[self.storyboard 
instantiateViewControllerWithIdentifier:@"SubView"];
svc.entries = p.appRecordList;
[svc.tableView reloadData];

此代码的作用是实例化一个新的 SubCategoryViewController,也称为“svc”。它与您当前的 View Controller 无关。它是另一个,有自己的 TableView 。您正在将新数据推送到一个新的、不可见的 View Controller ,而您从未使用过它。在 [.. reloadData] 之后,您的新 View Controller 被删除。

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

代替上面的代码,试试这个(并删除 subCategory-instantiation):

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

请记住,此代码会将当前在 self.entries 中的数据替换为新数据。如果你的新数据是另一页,那么你应该先追加数据,否则它在你的表中总是 10 行。我不知道 entries(您的数据源)是什么类型的对象,所以我无法告诉您如何追加数据。如果它是一个 NSArray,您可以这样做:

NSArray *temp = [self.entries arrayByAddingObjectsFromArray:p.appRecordList];
self.entries = temp;

如果它是一个 NSMutableArray,您可以简单地转到 [self.entries addObjectsFromArray:p.appRecordList];。如果您使用的是其他东西,我相信也有适用于它们的附加方法。

注意:如果我对 SubView..SubCategoryView.. 的理解有误,请评论两者之间的区别,我会尽力弄清楚.

关于ios - 将新行添加到 uitableview 的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22173189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com