2011-06-10 4 views
0

Dans ma vue de table, j'ai 4 UIButton s, 2 dans chaque rangée de tableau. Initialement tous les boutons ont une image sur eux (ils sont codés en dur). Maintenant, il y a un bouton dans mon application qui, lorsque tapé remplace les images sur les boutons avec de nouveaux en utilisant la méthode setImage, puis recharge la vue de la table. Mais malheureusement, je reçois l'ancienne vue de la table que je veux dire avec de vieilles images. Comment puis-je obtenir les nouvelles images sur les boutons?Recharger des images dans les boutons présents dans la vue de la table

Ma mise en œuvre cellForRowAtIndexPath: - // Personnalise l'apparence des cellules de vue de table.

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

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    // if (cell == nil) { 
    // cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
    // } 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    if(indexPath.row == 0) 
    { 
     button1=[[UIButton alloc] initWithFrame:CGRectMake(15,5,100,87)]; 
     [button1 setImage:[UIImage imageNamed:@"BUTTON.png"] forState:UIControlStateNormal]; 
     [button1 addTarget:self action:@selector(ClickTo:) forControlEvents:UIControlEventTouchUpInside]; 
     [cell.contentView addSubview:self.button1]; 

     button2=[[UIButton alloc] initWithFrame:CGRectMake(135,5,100,87)]; 
     [button2 setImage:[UIImage imageNamed:@"TURN OFF.png"] forState:UIControlStateNormal]; 
     [button2 addTarget:self action:@selector(ClickTo:) forControlEvents:UIControlEventTouchUpInside]; 
     [cell.contentView addSubview:button2]; 
    } 
    else if(indexPath.row == 1) 
    { 
     button3=[[UIButton alloc] initWithFrame:CGRectMake(15,5,100,87)]; 
     [button3 setImage:[UIImage imageNamed:@"JUMP.png"] forState:UIControlStateNormal]; 
     [button3 addTarget:self action:@selector(ClickTo:) forControlEvents:UIControlEventTouchUpInside]; 
     [cell.contentView addSubview:button3]; 


     button4=[[UIButton alloc] initWithFrame:CGRectMake(135,5,100,87)]; 
     [button4 setImage:[UIImage imageNamed:@"CLOSE.png"] forState:UIControlStateNormal]; 
     [button4 addTarget:self action:@selector(ClickTo:) forControlEvents:UIControlEventTouchUpInside]; 
     [cell.contentView addSubview:button4]; 
    } 
    else 
    { 
     // Do something here 
    } 
    return cell; 
} 
+0

pouvez-vous mettre votre implémentation cellForRowAtIndexPath? – AmineG

+0

J'ai édité ma question, s'il vous plaît vérifier et fournir une solution plz – Christina

+0

Vous créez de nouveaux boutons à chaque fois, vous ne devez créer des boutons qu'une seule fois, puis les utiliser. Votre code obtiendra une cellule existante (avec de nouvelles images) et ajoutera d'autres boutons (avec d'anciennes images) Essayez de sous-utiliser UITableViewCell avec des boutons comme attributs/propriétés – AmineG

Répondre

0

Vous définissez probablement l'image pour le mauvais état:

[myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];

Vous devez définir la valeur correcte pour UIControlStateNormal - où correct signifie celui qui correspond à l'état actuel de vos boutons (s).

+0

fait de cette façon seulement, puis rechargé la vue de la table mais toujours obtenu les anciennes données dans la vue de table – Christina

0

Il semble que vous ayez des images codées en dur dans la cellule pour la méthode de ligne, donc chaque fois que vous rechargez votre tableview, elles auront les mêmes images.

Donc, si vous voulez les modifier puis prendre une varible booléenne et mise à jour il aime:

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

    static NSString * CellIdentifier = @ "Cell";

    UITableViewCell * cellule = [tableView dequeueReusableCellWithIdentifier: CellIdentifier]; // if (cellule = nil) { // cellule = [[[UITailViewCell alloc] initWithFrame: CGRectZero reuseIdentifier: CellIdentifier] autorelease]; //} if (cellule = nil) { cellule = [[[UITlaceViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: CellIdentifier] autorelease]; }

    if (indexPath.row == 0) { button1 = [[UIButton alloc] initWithFrame: CGRectMake (15,5,100,87)];

    [button1 setImage:[UIImage imageNamed:@"BUTTON.png"] forState:UIControlStateNormal]; 
    [button1 addTarget:self action:@selector(ClickTo:) forControlEvents:UIControlEventTouchUpInside]; 
    [cell.contentView addSubview:self.button1]; 
    
    button2=[[UIButton alloc] initWithFrame:CGRectMake(135,5,100,87)]; 
    [button2 setImage:[UIImage imageNamed:@"TURN OFF.png"] forState:UIControlStateNormal]; 
    [button2 addTarget:self action:@selector(ClickTo:) forControlEvents:UIControlEventTouchUpInside]; 
    [cell.contentView addSubview:button2]; 
    

    } else if (indexPath.row == 1) { button3 = [[UIButton alloc] initWithFrame: CGRectMake (15,5,100,87)]; [button3 setImage: [UIImage imageNamed: @ "JUMP.png"] forState: UIControlStateNormal]; [button3 addTarget: action de soi: @selector (ClickTo :) forControlEvents: UIControlEventTouchUpInside]; [cellule.contentView addSubview: button3];

    button4=[[UIButton alloc] initWithFrame:CGRectMake(135,5,100,87)]; 
    [button4 setImage:[UIImage imageNamed:@"CLOSE.png"] forState:UIControlStateNormal]; 
    [button4 addTarget:self action:@selector(ClickTo:) forControlEvents:UIControlEventTouchUpInside]; 
    [cell.contentView addSubview:button4]; 
    

    } { autre // Faire quelque chose ici }

si (Mémento) {

[button1 setImage: [UIImage imageNamed: @ "changedImage1"] forState: UIControlStateNormal]; [button2 setImage: [UIImage imageNamed: @ "changedImage2"] forState: UIControlStateNormal]; [button3 setImage: [UIImage imageNamed: @ "changedImage3"] forState: UIControlStateNormal]; [button4 setImage: [UIImage imageNamed: @ "changedImage4"] forState: UIControlStateNormal];

}

return cell; 

}

// Cliquer pour la méthode Set Mémento oui et rechargent la table

- (void) ClickTo: (IBAction) expéditeur {

Mémento = YES; [tableview reloadData];

}

Questions connexes