Monotouch - UITableView中具有可变高度的多个自定义表格单元格

时间:2014-01-09 02:53:18

标签: ios uitableview xamarin.ios

我正在尝试创建一个表,其中每个单元格可以具有可变高度,并显示不同类型的数据。

对于身高要求,我发现这个名为“Xib-free”的酷炫布局引擎 (http://www.toptensoftware.com/xibfree/uitableviewcell_variable)。我认为这对于不同的细胞类型也有帮助,但是他们的例子也只使用了一种细胞类型。

我知道多种细胞类型是可能的(例如一种只有一个图像,一种只有文本,一种只有文本,等等),因为我在Objective-C中看到很多例子使用以下内容实现这一点(摘自{ {3}}):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:          (NSIndexPath *)indexPath {
if (indexPath.section == 0) {
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView    dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
                          reuseIdentifier:CellIdentifier];
    }

    containerObject = [objectCollection objectAtIndex:indexPath.row];
    [[cell textLabel] setText:containerObject.store];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    return cell;
} else {
    static NSString* cellIdentifier1 = @"FeatureCell";

    FeatureCell *cell1 = (FeatureCell*)[tableView   dequeueReusableCellWithIdentifier:cellIdentifier1];
        if (cell1 == nil) {
            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:cellIdentifier1 owner:nil options:nil];
            cell1 = (FeatureCell*)[nib objectAtIndex:0];
        }

        cell1.img1.image = [UIImage imageNamed:@"shower.png"];
        cell1.img2.image = [UIImage imageNamed:@"parking.png"];

        return cell1;
    }
}

当然Monotouch中没有cellForRowAtIndexPath,但我相当肯定这可以通过GetCell来实现。我说得相当肯定,因为我无法让它发挥作用。

这是我的思考过程:

- 我想要的每种细胞类型的不同自定义细胞类

- 在GetCell方法中,我会根据NSIndex添加每个单元格,类似于上面的代码。

我想要完成的另一件事是,一旦单元格类型只包含一个图像。 我不知道如何去做这个,因为单元格的样式仅涉及文本或左侧有图像的文本。

这是我想要完成的一个很好的例子: Calling two different custom cell in one UITableView issue

我很抱歉这个冗长的问题,但我真的可以帮忙。我觉得我在思考过程中非常接近,但需要一些指导。非常感谢你提前。

1 个答案:

答案 0 :(得分:2)

您可以将GetCell方法用于您想要执行的操作。此外,您可以子类化UITableViewCell并根据需要实现布局。甚至布局设计师也可以用来实现这一点。 你有GetHeightForRow(或类似的东西),你可以在其中定义具有索引和部分的行的高度(作为函数的参数传递),因此您可以为不同的表格单元格具有不同的高度。

我希望这会让你朝着正确的方向前进。