我正在尝试创建一个表,其中每个单元格可以具有可变高度,并显示不同类型的数据。
对于身高要求,我发现这个名为“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
我很抱歉这个冗长的问题,但我真的可以帮忙。我觉得我在思考过程中非常接近,但需要一些指导。非常感谢你提前。
答案 0 :(得分:2)
您可以将GetCell方法用于您想要执行的操作。此外,您可以子类化UITableViewCell并根据需要实现布局。甚至布局设计师也可以用来实现这一点。 你有GetHeightForRow(或类似的东西),你可以在其中定义具有索引和部分的行的高度(作为函数的参数传递),因此您可以为不同的表格单元格具有不同的高度。
我希望这会让你朝着正确的方向前进。