如何在一个UIViewController中动态创建多个UITableView

时间:2012-08-15 14:35:14

标签: objective-c xcode uitableview

我是使用XCode和Objective-C开发的新手,我希望你能帮助我。

问题是,我有一个带有UITableView的UITableViewController(使用InterfaceBuilder创建)。

节标题下的单元格是可扩展的。

现在我想在现有的TableView下动态创建多个UITableView。

样式与现有的TableView样式相同。

您能告诉我如何以编程方式创建这些TableView吗?

非常感谢

迈克尔

1 个答案:

答案 0 :(得分:0)

根据您的说法尝试使用分组表格视图。查看此链接以获得快速概述,并转到分组表视图部分。

编辑发现此示例here

好像它正是你要找的东西。还有一个非常酷的想法。

您必须只创建自己的自定义标题行,然后将其作为每个部分的第一行。对UITableView或其上的标题进行子类化现在可能会非常痛苦,我不确定您是否可以轻松地按照它们现在的工作方式从中获取操作。您可以轻松地将单元格设置为LOOK,如标题,并设置tableView:didSelectRowAtIndexPath以展开或折叠其手动部分。

如果我是你,我会存储一系列对应于"消费"每个部分的价值。然后,您可以在每个自定义标题行上设置tableView:didSelectRowAtIndexPath来切换此值,然后重新加载该特定部分。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 0) {
        ///it's the first row of any section so it would be your custom section header

        ///put in your code to toggle your boolean value here
        mybooleans[indexPath.section] = !mybooleans[indexPath.section];

        ///reload this section
        [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationFade];
    }
}

然后设置您的号码numberOfRowsInSection以检查mybooleans值,如果该部分未展开,则返回1,或者该部分中的项目数量为1+如果它被扩展。

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

    if (mybooleans[section]) {
        ///we want the number of people plus the header cell
        return [self numberOfPeopleInGroup:section] + 1;
    } else {
        ///we just want the header cell
        return 1;
    }
}

您还必须更新cellForRowAtIndexPath以返回任何部分中第一行的自定义标题单元格。