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

Posted

技术标签:

【中文标题】如何使添加到 UITableViewCell 内容视图的 UIView 适合其范围?【英文标题】:how to make a UIView added to UITableViewCell content view fit within its bounds? 【发布时间】:2011-06-12 21:35:19 【问题描述】:

如何使添加到 UITableViewCell 内容视图的 UIView 适合其边界?

也就是说,我创建了一个 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】:

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

我为我的自定义单元格 ex 创建了一个 UITableViewCell 的子类。 “我的自定义单元”。然后我为其创建一个 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;

【讨论】:

谢谢 - 那么这是否意味着我也需要一个自定义 UI 单元 MyCustomCell.m 和 MyCustomCell.h 文件?即目前我只创建了一个 NIB 文件视图并试图让事情只用这个.. 是的,你必须有办法访问添加到自定义 MyCustomCell 中的自定义 UIComponent。因此,创建 MYCustomCell.m 和 MyCustomCell.h 将代码中的对象与 NIB 和 VIOLA 中的对象链接起来!

以上是关于如何使添加到 UITableViewCell 内容视图的 UIView 适合其范围?的主要内容,如果未能解决你的问题,请参考以下文章

将imageview添加为uitableviewcell的子视图时如何使imageview可拉伸

如何使 UILabel *not* 将触摸传递给它嵌入的 UITableViewCell?

重新排序单元格时如何在 UITableViewcell 内容视图中添加图像?

如何将 UIViewController/UITabBar 添加到 UITableViewCell?

如何将目标操作添加到 UITableViewCell

如何向 UITableViewCell 添加手势?