1

2つの異なるカスタムクラスからセルを読み込んでいるテーブルビューがあります。コードは次のようになります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier1 = @"CellIdentifier";
        static NSString *CellIdentifier2 = @"Cell";
            
        if(messagesarray==nil||[messagesarray count]==0)
        {
            
        }
        else
        {
            NSMutableDictionary *dicttable=[messagesarray objectAtIndex:indexPath.row];
            NSString *head=[dicttable objectForKey:@"gfgfg"];
            NSString *head1=[dicttable objectForKey:@"gfgfgf"];
            if([type isEqualToString:@"m"])    
            {
                if([head isEqualToString:@"NA"])
                {
                 
                    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1];
                    if (cell == nil)
                    {
                        cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier1] autorelease];
                        cell.backgroundView = [ [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"white_top_portion.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]autorelease];
                    }
                    cell.selectionStyle = UITableViewCellSelectionStyleNone;
                    cell.nameLabel.text=head;
                    cell.msg.text=head1;
                    [cell.button addTarget:self action:@selector(callAction:) forControlEvents:UIControlEventTouchUpInside];     
                  
                    if(icon!=nil)
                    {
                        if(![[ImageCache sharedImageCache] hasImageWithKey:icon])
                        {
                            cell.myImageView.image = [UIImage imageNamed:@"fggtgf.png"];
                            NSArray *myArray = [NSArray arrayWithObjects:cell.myImageView,icon,@"fgfgfg.png",[NSNumber numberWithBool:NO],nil];
                            AppDelegate *appDelegate = (AppDelegate  *)[[UIApplication sharedApplication] delegate];
                            [appDelegate performSelectorInBackground:@selector(updateImageViewInBackground:) withObject:myArray];   
                        }
                        else 
                        {
                            cell.myImageView.image = [[ImageCache sharedImageCache] getImagefromCacheOrUrl:icon];
                        }
                    }
                    else
                    {
                        cell.myImageView.image = [UIImage imageNamed:@"fgfgfg.png"];  
                      
                    } 
             
                    cell.label.text=sub;   
                    return cell;
                }
                else
                {
                    Customcellwithimage *cell = (Customcellwithimage *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier2];
                 
                    if (cell == nil)
                    {
                        cell = [[[Customcellwithimage alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier2] autorelease];
                        cell.backgroundView = [ [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"white_deal_bg.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]autorelease];
                    }
                 
                    cell.selectionStyle = UITableViewCellSelectionStyleNone;
                    cell.datelabel1.text=subtitle;
                    cell.nameLabel1.text=head;
                    cell.msg1.text=head1;
                    if(icon!=nil)
                    {
                        if(![[ImageCache sharedImageCache] hasImageWithKey:icon])
                        {
                            cell.myImageView1.image = [UIImage imageNamed:@"fgfgfgf.png"];
                            NSArray *myArray = [NSArray arrayWithObjects:cell.myImageView1,icon,@"fgfgfgf.png",[NSNumber numberWithBool:NO],nil];
                            MFAppDelegate *appDelegate = (MFAppDelegate  *)[[UIApplication sharedApplication] delegate];
                            [appDelegate performSelectorInBackground:@selector(updateImageViewInBackground:) withObject:myArray];   
                           
                        }
                        else 
                        {
                            cell.myImageView1.image = [[ImageCache sharedImageCache] getImagefromCacheOrUrl:icon];
                        }
                    }
                    else
                    {
                        cell.myImageView1.image = [UIImage imageNamed:@"fgfgfgf.png"];  
                    } 
                  
                    cell.cellview1.image=[UIImage imageNamed:@"vf.png"];
                    cell.label1.text=sub;
                    [cell.button1 addTarget:self action:@selector(callAction:) forControlEvents:UIControlEventTouchUpInside]; 
                    cell.bannerview1.image=[UIImage imageNamed:@"vfgf.png"];
                    return cell;
                }   
            }                 
        }  
    }

私の問題は、配列の最初の要素だけがセル内で繰り返しプライトしていることです(セルが繰り返されています)、これがなぜ起こっているのかを誰かが知るのを手伝ってくれますか?

4

1 に答える 1

2

各セクションに1つの行しかない場合、indexPath.rowこのメソッドが呼び出されるたびに0になります。行は配列要素を選択するために使用するものであるため、常に同じ行になるのが妥当です。

セクション数で戻り、行数で1をindexPath.section返す場合は、代わりにを使用する必要があります。[messagesarray count]

于 2012-12-12T13:33:35.493 に答える