0

我需要在最多 2 个级别的可扩展表格视图中显示来自 Web 服务的数据。虽然这对于静态数据是可能的,但我无法找到一种方法来处理从后端检索到的数据。Postman 中的一个示例如下所示:

Postman 中的一级 UITableView 数据

以上仅针对一级扩展。在这里,“会计”是主要类别,“jj 标签”、“认证公众”和“一般服务”是展开后可见的子类别(一旦用户点击名为“会计”的单元格)。同样,需要显示几个类别,并且可能包含也可能不包含第二级的进一步扩展。

至于网络服务,我可以选择以两种方式获取数据:

  • 在单个 API 中获取主类别和子类别(如上图所示)。
  • 在不同的 API 中获取主类别和子类别。

到目前为止,我已经尝试titleForHeaderInSectioncellForRowAtIndexPath

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

    return [[subCatArray objectAtIndex:section] count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ceLL" forIndexPath:indexPath];
    cell.textLabel.text = [[subCatArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
    return cell;
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

    return [catArray count];
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{

    for (int i=0; i<[catArray count]; i++) {
        if(section == i){
            return NSLocalizedString([catArray objectAtIndex:i], nil);
        }
    }
    return nil;
}

但是我该如何进行第二级并使这些可折叠/可扩展?

4

1 回答 1

0

在开始之前,我想将扩展的单元称为主单元,将扩展的单元(即子类别单元)称为辅助单元。

当您开始实施时,将主单元格作为标题。但是,如果没有在“numberOfRowsInSection”方法中给出该特定部分的 subCatArray 计数,您需要修改您计划在“numberOfRowsInSection”方法中返回其计数的数组。该数组应该是这样的,它应该只包含可见行的详细信息,即,它最初应该有零个元素,并且在点击说“Accountants”时使用“jj tags”、“Certified Public”和“等元素的详细信息修改数组General Services”,然后再次点击“Accountants”单元格使数组为空。要检测节标题上的点击,您可以放置​​一个框架等于“viewForHeader”框架的按钮 并将部分索引作为按钮标签传递,或者您可以使用点击手势。确保在点击该部分时调用的选择器上重新加载表格。

除了使用表格视图部分,您可以简单地使用行来显示主单元格和辅助单元格,但相应地更改用于填充单元格的数组。

于 2017-02-08T07:28:23.923 回答