如何从UITableVIewController故事板模式静态单元重用一些单元格

时间:2012-02-27 09:22:15

标签: xcode ios5 xcode4.2 uitableview storyboard

我有UITableViewController使用Interface Builder制作静态单元,并添加了三种不同类型的单元格。

第一个单元格是某种细节, 最后一个单元格允许用户输入反过来显示中心单元格

enter image description here

我希望重复使用中心单元格,并在用户输入最后一个注释框时添加新单元格。

我的问题是,因为它的静态细胞我不能单独重用中心细胞。我该如何解决呢。请帮忙。

1 个答案:

答案 0 :(得分:3)

不要使用静态细胞。静态细胞不打算重复使用。使用静态单元格,您只需在xib中创建一个表。

创建三个不同的原型单元格,并为它们提供不同的重用标识符,并像常规单元格一样使用它们。

由于您的表分为几个部分,因此只需使用indexPath的section信息返回正确的单元格。

这样的事情应该有效:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 3;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section == 1) {
        return _objects.count;
    }
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = nil;
    if (indexPath.section == 1) {
        cell = [tableView dequeueReusableCellWithIdentifier:@"SecondCell"];
        // configure the mid cells
        NSDate *object = [_objects objectAtIndex:indexPath.row];
        cell.textLabel.text = [object description];
    }
    if (indexPath.section == 0) {
        cell = [tableView dequeueReusableCellWithIdentifier:@"FirstCell"];
        // configure first cell
    }
    else if (indexPath.section == 2) {
        cell = [tableView dequeueReusableCellWithIdentifier:@"ThirdCell"];
        // configure last cell
    }
    return cell;
}

也可以查看tableFooterViewtableHeaderView属性。也许你根本不需要第一个和最后一个项目的单元格。