0

我似乎无法将此 imageview 添加到我的自定义 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)。我真的不知道发生了什么。如果有人有任何建议,那就太好了。我也尝试将图像视图直接添加到单元格的视图本身,但无济于事。(而且我很确定那是错误的)。

太棒了!

4

3 回答 3

2

你不应该在init单元格的方法中设置你的图像。你需要把它分开。

于 2012-10-30T05:10:41.703 回答
0

实施layoutSubviews方法并检查是否有任何区别。它应该解决这个问题。

- (void)layoutSubviews
{
  videoImageView.frame = CGRectMake(5, 5, 310, 120);
}

更新:

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

- (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;
于 2012-10-26T00:44:35.463 回答
0

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

于 2012-10-26T02:04:46.113 回答