2012-02-09 12 views
-1

jsonフィードを解析して、テーブルview.ifを読み込むと、解析された値が「1」で、テーブルビューcell.iの最初の4行が緑のチェックマーク最初の4行でない場合、チェックマークは灰色のcheck.ifになります。私の解析された値はnullです。checkmark.everthngはうまく動作しません。しかし、テーブルビューをスクロールすると、チェックマークの画像が重なってしまいます。以下はスクリーンショットとコードです。画像がテーブルビューのセルに重なって表示される

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

//[tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 

} 
NSDictionary *boy=[self.media1 objectAtIndex:indexPath.row];  
NSString *str=[[NSString alloc]initWithFormat:@"%@",boy]; 

if ([str isEqualToString:@"1"]) 
{ 
    if(indexPath.row==0||indexPath.row==1||indexPath.row==2||indexPath.row==3) 
    { 
    CGRect starFrame = CGRectMake(260, 18, 50, 40); 

    UIImageView *starImage = [[[UIImageView alloc] initWithFrame:starFrame] autorelease]; 
    starImage.image = [UIImage imageNamed:@"tic.png"]; 
    [cell.contentView addSubview:starImage]; 
    } 
    else 
    { 
    CGRect starFrame1 = CGRectMake(260, 18, 50, 40); 

    UIImageView *starImage1 = [[[UIImageView alloc] initWithFrame:starFrame1] autorelease]; 
    starImage1.image = [UIImage imageNamed:@"brrr.png"]; 
    [cell.contentView addSubview:starImage1]; 

    } 


}  

cell.textLabel.text=[story objectAtIndex:indexPath.row]; 

     return cell; 
    } 

enter image description here

答えて

0

if ([str isEqualToString:@"1"]) 
{ 
    if(indexPath.row==0||indexPath.row==1||indexPath.row==2||indexPath.row==3) 
    { 
     CGRect starFrame = CGRectMake(260, 18, 50, 40); 

     UIImageView *starImage = [[[UIImageView alloc] initWithFrame:starFrame] autorelease]; 
     starImage.image = [UIImage imageNamed:@"tic.png"]; 
     starImage.tag = 1000; 
     [cell.contentView addSubview:starImage]; 
    } 
    else 
    { 
     CGRect starFrame1 = CGRectMake(260, 18, 50, 40); 

     UIImageView *starImage1 = [[[UIImageView alloc] initWithFrame:starFrame1] autorelease]; 
     starImage1.image = [UIImage imageNamed:@"brrr.png"]; 
     starImage1.tag = 1000; 
     [cell.contentView addSubview:starImage1]; 

    } 

} 
else 
{ 
    UIImageView *starImage = [cell.contentView viewWithTag:1000]; 
    if (starImage) { 
     [starImage removeFromSuperview]; 
    } 
} 
+0

すごいよ。 – kingston

1

あなたは電池を再利用しています。したがって、tableViewは、使用されたセルが表示されていなければそれを返します。

この問題を回避するには、コードのすぐ下にある必要があります。次のコードを使用し

if ([str isEqualToString:@"1"]) 
{ 
    if(indexPath.row==0||indexPath.row==1||indexPath.row==2||indexPath.row==3) 
    { 
    CGRect starFrame = CGRectMake(260, 18, 50, 40); 

    UIImageView *starImage = [[[UIImageView alloc] initWithFrame:starFrame] autorelease]; 
    starImage.image = [UIImage imageNamed:@"tic.png"]; 
    starImage.tag = 1000; 
    [cell.contentView addSubview:starImage]; 
    } 
    else 
    { 
    CGRect starFrame1 = CGRectMake(260, 18, 50, 40); 

    UIImageView *starImage1 = [[[UIImageView alloc] initWithFrame:starFrame1] autorelease]; 
    starImage1.image = [UIImage imageNamed:@"brrr.png"]; 
    starImage.tag = 1000; 
    [cell.contentView addSubview:starImage1]; 

    } 


} 
else 
{ 
UIImageView *starImage1 = [cell.contentView viewWithTag:1000]; 
starImage1.image = nil; 
} 
+0

:まだ私は警告を取得mは、他の部分image.inを取得し、「互換性のないポインタ型は、リンクします。」 – kingston

+0

UIImageView *でキャストしてください。すなわち(UIImageView *)[cell.contentView viewWithTag:1000]; – Apurv

関連する問題