1

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

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

4

1 回答 1

1

看看我的博客,它肯定会对你有所帮助。链接在这里。

适用于 iOS 的可扩展/可折叠表格

你需要做以下事情

  1. 首先根据您的 json 文件设计您的类,因为在我的情况下它是“类别”。
  2. 完成模型类后,您需要编辑以下方法来准备模型对象数组。

提示:从 json 中,我们可以直接找到我们的字典,比如

id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

其中 result 可以进一步转换以获得字典对象。而加载数据就像下面的方法一样

    - (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. 一旦完成,唯一剩下的就是编辑表格视图的数据源并相应地委托方法。
于 2013-04-02T09:42:55.130 回答