0

このイメージビューをカスタム 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];
}

デバッガーで、imageview を contentview のサブビューとして追加すると、フレームが (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 init メソッドを initWithStyle 以外の場所に移動することもできます。それは役に立ちます。

于 2012-10-26T02:04:46.113 に答える