0

UITableViewCell の右側に画像を表示したい。私はそれを行うために、このコードを使用しています:

CGRect imageRect = {80,0,225,44};
UIImageView *uiv = [[UIImageView alloc] initWithFrame:imageRect];
[uiv setImage:[UIImage imageNamed:[NSString stringWithFormat:@"star%@.png", [[self reataurant] valueForKey:@"stars"]]]];
[uiv setClipsToBounds:YES];
[cell addSubview:uiv];

私の問題は、テーブルビューをスクロールしているときに、画像が他のセルに表示されることです。私は何を間違えていますか?

4

3 に答える 3

1

おそらく起こっていることは、望まないときにすでに画像を持っているセルを再利用しているということです。小切手

a)セルを再利用するとき、星の画像がある場合は削除します。

b)セルを返す前に、その時点で星を追加します(星が表示されるかどうかを判断するために使用するテストを使用します)。

于 2012-04-04T15:23:54.160 に答える
0

同じ効果を得るために、画像ビューをアクセサリビューとしてテーブルセルに簡単に追加できます。

理解のためのサンプルコードは次のとおりです。

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"fileName"]];
cell.accessoryView = imageView;
[imageView release];

また、セル識別子を使用して、cellForRowAtIndexPathメソッドでテーブルビューのセルスペースを再利用していることを確認してください。これにより、上書きされた問題を排除できます;)

NSString *CellIdentifier = [NSString stringWithFormat:@"S%1dR%1d",indexPath.section,indexPath.row]; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) 
{
   cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

画像が互いに表示されるという問題が解消されることを願っています、ありがとう:)

于 2012-06-11T08:00:37.187 に答える
0

これらの UITableViewCells は再利用されます。あなたの cellForRowAtIndexPath を見てください

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

1 つまたは特定のセル セットにこの特定のレイアウトを持たせたい場合は、これらのセルに別の cellIdentifier を渡すことができます。

于 2012-04-04T15:22:16.017 に答える