如何使UIView添加到UITableViewCell内容视图适合其范围内?

时间:2011-06-12 21:35:20

标签: iphone ios uitableview addsubview

如何将UIView添加到符合其界限的UITableViewCell内容视图中?

也就是说,我创建了一个NIB文件(上面有3个标签),并希望用它来显示UITableView中的每个单元格。我在cellForRowAtIndexPath方法中添加了基于自定义NIB的视图到单元格的内容视图,但是我看到的最终结果是一(1)个基于自定义NIB的视图(在我看中的tableview中不是多个)。

如何安排每个自定义视图在每个UITableViewCell中整齐地放置?另请注意,自定义NIB视图中的标签具有自动换行功能。

我是否必须为自定义NIB视图创建一个框架,但在那种情况下,我不确定如何设置坐标。它会相对于UITableViewCell吗?如果自定义视图高度可以由于它的UILabel自动换行而改变,那么我假设我必须在UITableView中单独手动计算这个高度? (也许我应该去动态/自定义视图创建并放弃使用InterfaceBuilder / NIB的概念)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    UIView *detailedView = [[[NSBundle mainBundle] loadNibNamed:@"DetailedAppointView" owner:self options:nil] objectAtIndex:0];
    [cell.contentView addSubview:detailedView];  // DOESN'T SEE TO WORK

    return cell;
}

1 个答案:

答案 0 :(得分:1)

如果我需要实现自定义UITableViewCell,我就是这样做的。

我为自定义单元格ex创建了UITableViewCell的子类。 “MyCustomCell”。然后我为它创建一个NIB文件,在这个NIB文件中,我插入UITableViewCell并将其类型更改为“MyCustomCell”,并为其指定一个与类名相同的标识符。然后我将所有子视图插入到我的单元格中。全部在IB。

在我把我的细胞拉到我的喜欢之后:-)我用以下方式使用它:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MyCustomCell";
    static NSString *CellNib = @"MyCustomCell";

    MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil];
        cell = (MyCustomCell *)[nib objectAtIndex:0];
    }

    //Manipulate your custom cell here

    return cell;
}