事实上,我是iOS编程的新手,我正在尝试自己学习。
我有一个带有标题部分的分段表格视图,但我希望视图能够在点击此部分时展开部分中的行。
我使用本教程:http://blog.paxcel.net/blog/expandablecollapsible-table-for-ios/
但在我的应用程序中,我有一个Json
文件,而不是Plist
文件。
所以我在setCategoryArray()函数中使用:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData* data = [NSData dataWithContentsOfURL:
[NSURL URLWithString: @"http://......./catjsonf.php"]];
NSError* error;
json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
jsonResults = [json objectForKey:@"nodes"];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
});
而不是:
NSURL *url = [[NSBundle mainBundle] URLForResource:@”CategoryList” withExtension:@”plist”];
NSArray *mainArray = [[NSArray alloc] initWithContentsOfURL:url];
但它不起作用 - 我应该做别的吗?
答案 0 :(得分:1)
查看我的博客,它一定会对你有所帮助。这是链接。
Expandable/Collapsible Table For iOS
你需要做以下事情
提示:从json,我们可以直接找到像
这样的词典
id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
其中结果可以进一步铸造以获得dictinary对象。负载数据就像下面的方法一样
- (void) setCategoryArray
{
NSURL *url = [[NSBundle mainBundle] URLForResource:@”CategoryList” withExtension:@”plist”];
NSArray *mainArray = [[NSArray alloc] initWithContentsOfURL:url];
NSMutableArray *categoryArray = [[NSMutableArray alloc] initWithCapacity:[mainArray count]];
for (NSDictionary *dictionary in mainArray)
{
Category *category = [[Category alloc] init];
category.name = [dictionary objectForKey:@"name"];
category.list = [dictionary objectForKey:@"list"];
[categoryArray addObject:category];
}
self.categoryList = categoryArray;
}