在tableview中显示类别和子类别

时间:2017-03-28 13:31:45

标签: ios objective-c uitableview

我有两个数组:一个用于类别,第二个用于子类别。当我解析一个类别并将其保存在第一个数组并从该数组中获取子类别时,我想访问我的类别的特定子类别。例如,对于1个类别数组的索引,我想保存子类数组。

NSDictionary * datas = [dic valueForKey:@"data"];

for(NSArray *data in datas ){
    ParseSubCategoryModel * PSCM = [[ParseSubCategoryModel alloc]init];

    PSCM.ZeroIndex = [data objectAtIndex:0];
    PSCM.OneIndex = [data objectAtIndex:1];
    PSCM.TwoIndex = [data objectAtIndex:2];
    PSCM.THreeIndex = [data objectAtIndex:3];

    NSArray *sub1 = [ PSCM.OneIndex valueForKey:@"sub_categories"];// parse sub_categories here ok he yaha tak
    self.fetchData  = [[NSMutableArray alloc]init];
    self.SubSubData  = [[NSMutableArray alloc]init];


    for(NSDictionary *subdic in sub1 ){

        ParseSubCategoryModel * PSCM1 = [[ParseSubCategoryModel alloc]init];
        PSCM1.id_no = [subdic valueForKey:@"_id"];
        PSCM1.name = [subdic valueForKey:@"name"];
        PSCM1.is_active = [subdic valueForKey:@"is_active"];
        PSCM1.url = [subdic valueForKey:@"url"];
        PSCM1.category_order = [subdic valueForKey:@"sub_category_order"];
        PSCM1.updated_at = [subdic valueForKey:@"updated_at"];
        PSCM1.created_at = [subdic valueForKey:@"created_at"];
        [self.fetchData addObject:PSCM1];

        NSArray *subsub1 = [subdic valueForKey:@"sub_subcategories"];//parse sub_subcategories here
        for(NSDictionary *subSubdic  in subsub1 ){

            ParseSubCategoryModel * PSCM2 = [[ParseSubCategoryModel alloc]init];
            PSCM2.id_no = [subSubdic valueForKey:@"_id"];
            PSCM2.name = [subSubdic valueForKey:@"name"];
            PSCM2.is_active = [subSubdic valueForKey:@"is_active"];
            PSCM2.url = [subSubdic valueForKey:@"url"];
            PSCM2.category_order = [subSubdic valueForKey:@"sub_subcategory_order"];
            PSCM2.updated_at = [subSubdic valueForKey:@"updated_at"];
            PSCM2.created_at = [subSubdic valueForKey:@"created_at"];
            [self.SubSubData insertObject:PSCM2 atIndex:0];
            NSLog(@"%@",self.SubSubData);
        }
    }
} 

1 个答案:

答案 0 :(得分:0)

使用UITableView节标题和单元格来解决您的需求是一种简单的方法:

我也尝试过这种方法来扩展和折叠UITableview:

mutate

//使用NSDictionary或您的自定义对象获取类别ID以在我们的字典中传递以获取子类别数组

@interface ViewController ()<UITableViewDelegate ,UITableViewDataSource>
{
    NSArray *categoryArray;
    NSArray *subcategoryArray;
    //This Dictionary is be used to add the Subcategory Array for each category using category ID. 
    NSMutableDictionary *subCategoryDict;
}
@end


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    //Returns number of category array as Section
    return categoryArray.count;
}

您还可以使用UITableview单元格自定义标题部分。       您需要创建UIButton并将子视图添加为剖面视图以供选择,确保已添加带有值的标记作为剖面。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    NSDictionary *data = [categoryArray objectAtIndex:section];
    NSArray *subcategory = [subCategoryDict valueForKey:[data valueForKeyPath:@"_categoryId"]];

    return subcategory.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *Cell = [tableView dequeueReusableCellWithIdentifier:@"identifier" forIndexPath:indexPath];
    NSDictionary *data = [categoryArray objectAtIndex:indexPath.section];
    NSArray *subcategory = [subCategoryDict valueForKey:[data valueForKeyPath:@"_categoryId"]];
    NSDictionary *subCatData = [subcategory objectAtIndex:indexPath.row];

    Cell.textLabel.text = [subCatData valueForKey:@"values"];

    return Cell;
}

希望这可以按照您的要求运作。

如果您想使用自定义UITableView,那么您可以查看以下代码: https://github.com/genkernel/TreeView