将 UIImageView 添加到自定义 UITableViewCell

Posted

技术标签:

【中文标题】将 UIImageView 添加到自定义 UITableViewCell【英文标题】:Adding UIImageView to custom UITableViewCell 【发布时间】:2012-10-26 00:28:41 【问题描述】:

我似乎无法将此图像视图添加到我的自定义 uitableviewcell 类中,我无法弄清楚。这是我的代码:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) 
        // Initialization code
        [self layoutCell];
    
    return self;


- (void)layoutCell

    self.videoImageView = [[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 310, 120)];
    [self.videoImageView setImage:[UIImage imageNamed:@"myImage.jpg"]];
    [self.contentView addSubview:self.imageView];

在调试器中,我注意到一旦我将图像视图添加为内容视图的子视图,如果有帮助,框架就会重新分配给 (0,0,0,0)。我真的不知道发生了什么。如果有人有任何建议,那就太好了。我也尝试将图像视图直接添加到单元格的视图本身,但无济于事。 (而且我很确定那是错误的)。

谢谢!

【问题讨论】:

尝试在tablecell类中实现layoutSubviews方法 【参考方案1】:

您不应该在init 单元格方法中设置您的图像。您需要将其分开。

【讨论】:

【参考方案2】:

实现layoutSubviews 方法并检查是否有任何不同。它应该可以解决这个问题。

- (void)layoutSubviews

  videoImageView.frame = CGRectMake(5, 5, 310, 120);

更新:

尝试将layoutCell 方法从init 方法更改。而是在tableview 的cellForRowAtIndexPath 方法中将其称为[cell layoutCell]。这将确保即使在重新加载时调用 dequeureuse,它也会正确设置 UIImage 和框架。您可以在您的 init 方法中添加 self.videoImageView = [[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 310, 120)] ;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) 
        // Initialization code
        self.videoImageView = [[[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 310, 120)] autorelease]; //no need of autorelease if ARC is used
    
    return self;


- (void)layoutCell

    self.videoImageView.frame = CGRectMake(5, 5, 310, 120);
    [self.videoImageView setImage:[UIImage imageNamed:@"myImage.jpg"]];
    [self.contentView addSubview:self.videoImageView];

cellForRowAtIndexPath

//create cell
[cell layoutCell];

return cell;

【讨论】:

【参考方案3】:

您分配 self.videoImageView,然后将 self.imageView 添加到 contentView(似乎是输入错误)。您也可以按照其他人的建议将您的 UI 初始化方法移动到 initWithStyle 以外的其他位置。这会有所帮助。

【讨论】:

以上是关于将 UIImageView 添加到自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

iOS将点击手势添加到UIImageView

将视频添加到自定义照片集合返回错误

传单:如何将文本标签添加到自定义标记图标?

将滚动条添加到自定义 QWidget

如何将子视图添加到自定义 UICollectionViewCell

以编程方式将 UILabel 添加到自定义 tableViewCell