0

ペン先からロードされたカスタムUITableViewCellがあります。その中には3つのUIImageViewビューがあります。この-(UITableViewCell*) tableView:(UITableView*) cellForRowAtIndexPath:(NSIndexPath*)indexPathメソッドでは、各行のプロパティをチェックして、各行が表示されているかどうかを判断します。それらが表示されない場合は、画像のx位置をシフトして、空白がないようにします。使ってます:

cell.imageView1.hidden = YES;
cell.imageView2.hidden = YES;
cell.imageView3.hidden = YES;

int x = 0;

CGRect frame1 = cell.imageView1.frame;

if (property1)
{
    cell.imageView1.hidden = NO;
    frame1.origin.x = x;
    x += SPACING;
}

CGRect frame2 = cell.imageView2.frame;

if (property2)
{
    cell.imageView2.hidden = NO;
    frame2.origin.x = x;
    x += SPACING;
}

// etc...

何らかの理由で、テーブルが最初に表示されたとき、画像は間違った場所にありますが、セルが表示されないように上下にスクロールすると、画像の場所は正しい場所に移動します。これを引き起こしているのは何ですか?

4

2 に答える 2

1

あなたのコードを理解したかどうかはわかりません。setNeedsLayoutただし、フレームを変更してから呼び出してみることができます。

[cell setNeedsLayout]

このメソッドは、このビューが次のレンダリングでレイアウトする必要があることを示しています。

于 2012-09-11T19:37:27.440 に答える
0

適切な解決策を教えてくれたFelipeに感謝します。UITableViewCellサブクラスでは、layoutSubviewsメソッドをオーバーライドして、状態に応じて画像を適切にレイアウトします。

于 2012-09-11T21:54:28.293 に答える