使用json文件折叠展开标题部分

时间:2013-04-02 09:25:58

标签: iphone ios json uitableview

事实上,我是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];

但它不起作用 - 我应该做别的吗?

1 个答案:

答案 0 :(得分:1)

查看我的博客,它一定会对你有所帮助。这是链接。

Expandable/Collapsible Table For iOS

你需要做以下事情

  1. 首先根据你的json文件设计你的类,就像我的情况一样,它是“Category”。
  2. 完成模型类后,需要编辑以下方法来准备模型对象数组。
  3.   

    提示:从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;
         }
    
    1. 完成后,唯一可以编辑表视图的数据源并相应地委托方法。