我是目标-c的新手。我有问题;
我正在从JSON中解析并将它们写入带有数组的tableview。 这显然是很好的结果。
但是当我向下滚动时我想要第二页。我读了文件的音调。但是我无法将第二页传递给tableView。
以下是我的代码摘要;
我在第0页调用JSON get和make数组方法。(没问题)
- (void)viewDidLoad
{
[self takeList:0];
}
我的JSON get和make数组方法。 (问题在这里)
-(void)takeList: (NSUInteger) page
{
NSString * urlStr = [NSString stringWithFormat:@"http://www.EXAMPLE.com/json/main.json"];
NSURL * url = [NSURL URLWithString:urlStr];
NSData * data = [NSData dataWithContentsOfURL:url];
if (page == 0) {
array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
}else{
new_array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSMutableArray *ar1 = [array mutableCopy];
NSMutableArray *ar2 = [new_array mutableCopy];
[ar1 addObject:ar2];
[self.myTableView reloadData];
}
}
我的滚动调用方法(无问题)
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSInteger currentOffset = scrollView.contentOffset.y;
NSInteger maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height;
if ((currentOffset > 0) && (maximumOffset - currentOffset) <= 140) {
pages++;
[self takeList:pages];
}
}
最后cellForRowAtIndexPath
使用此数组。
请帮我“如何将新页面发送到tableView?”。
谢谢(抱歉我的英语不好。)
答案 0 :(得分:3)
此代码
new_array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSMutableArray *ar1 = [array mutableCopy];
NSMutableArray *ar2 = [new_array mutableCopy];
[ar1 addObject:ar2];
[self.myTableView reloadData];
不会做任何有用的事情。这不是你如何在objective-c(或任何我能想到的语言)中连接数组。相反,你需要用以下内容替换它
new_array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
array = [array arrayByAddingObjectsFromArray:new_array];
[self.myTableView reloadData];
答案 1 :(得分:1)
我认为你在这里有两个问题: 当页面为0时,您正在使用名为“array”的NSArray作为数据源。 当您获得下一页时,您正在使用ar1。
将“array”设为NSMutableArray并执行以下操作:
-(void)takeList: (NSUInteger) page
{
NSString * urlStr = [NSString stringWithFormat:@"http://www.EXAMPLE.com/json/main.json"];
NSURL * url = [NSURL URLWithString:urlStr];
NSData * data = [NSData dataWithContentsOfURL:url];
array = [array arrayByAddingObjectsFromArray:[NSJSONSerialization JSONObjectWithData:data options:0 error:nil]];
self.myTableView reloadData];
}
当然,你必须先在其他地方初始化你的数组。我也会用异步请求来检查是否有任何数据被下载并且没有解析错误。