2011-08-20 9 views
0

私は、高速化の結果に関するいくつかの情報を表示するためにUITableViewを使用しています:どのような罰金がかかりますか?また、運転免許証に含まれる赤いドットを使用します。これは各行で0〜6になるので、私は次のようにしました。UITableViewCellでUIImageViewを動的に追加する

- (UITableViewCell *)tableView:cellForRowAtIndexPath: 

// Code if no cell is available in the que 

// End of that code 

UIImage *seniorImage = [UIImage imageNamed:@"ticket_dot.png"]; 

if (seniorDots == 0) { 

} else { 
    for (int i = 0; i < seniorDots; i++) { 
     UIImageView *seniorImageView = [[UIImageView alloc] initWithFrame:CGRectMake(40.0 + (i * 15.0), 40.0, 15.0, 40.0)]; 
     seniorImageView.image = seniorImage; 
     seniorImageView.contentMode = UIViewContentModeCenter; 
     [cell.contentView addSubview:seniorImageView]; 
     [seniorImageView release]; 
    } 
} 

seniorDotsはplistファイルから得られる変数です。コードは意図したとおりに動作していますが、わかるように、コードを削除する方法はありません。最初にテーブルビューを開くと、予想されるビューが表示されますが、コードを上にスクロールすると、UIImageViewsがセルに追加されます。古いものは削除されません。これらのドットを参照して、新しいドットを追加する前に画面からそれらのドットを削除するにはどうすればよいですか?

答えて

1

あなたがcellForRowAtIndexPathメソッド内のコードの下に置くことができます。

//その他のデータ

for (UIImageView *img in cell.contentView.subviews) { 
     if ([img isKindOfClass:[UIImageView class]]) { 
      [img removeFromSuperview]; 
     } 
    } 

を削除し、私はそれはあなたに役立つことを願っています。問題が発生した場合にお知らせください。

+0

iOS開発者:ありがとう、これは一種汚いです。変更されていないセル内に他のUIImageViewsがあれば、そのトリックを適切に行うことはできません。しかし、この場合は動作しますが、コードにいくつかのエラーがありますが、あなたの意図が理解できました。誰も他の誰かがより良い解決策を持っていなければ、私はそれを受け入れます。 – LuckyLuke

+0

あなたの親切なフィードバックをありがとう。 –

2
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

UIImageView *imgView; 
if(cell == nil) 
{ 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero   reuseIdentifier:CellIdentifier] autorelease]; 

imgView = [[UIImageView alloc] initWithFrame:CGRectMake(100,0,100,62)]; 
[imgView setImage:[UIImage imageNamed:@"img.png"]]; 
imgView.tag = 55; 
[cell.contentView addSubview:imgView]; 
[imgView release]; 
} 
else 
{ 
    imgView = (id)[cell.contentView viewWithTag:55]; 
} 
関連する問題