2010-11-22 6 views
2

Je dois créer un bouton par programmation, et définir un fond d'image à ce bouton. Il y a une condition, je veux cacher ce bouton et montrer un UITableViewCellAccessoryDetailDisclosureButton, mais je ne sais pas comment.comment masquer un bouton par programme

Le bouton est toujours visible et le UITableViewCellAccessoryDetailDisclosureButton se trouve dessus.

Voici mon code:

if (filemodels.fileType == @"project" && filemodels.fileExpanse == @"none") { 
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 

    NSLog(@"open expanse"); 
    //[displayBut isHidden]; 
    //displayBut.hidden = YES; 
    //[displayBut setImage:nil forState:UIControlStateNormal]; 
    displayBut.alpha = 0.0; 

} 

Quelqu'un peut-il aider?

Mise à jour:

En ce qui concerne la réponse de Vladimir. Je l'ai changé selon sa suggestion, mais le bouton ne se cache toujours pas.

Le code est comme ceci:

if ([filemodels.fileType isEqualToString:@"project"] && [filemodels.fileExpanse isEqualToString:@"none"]) { 

    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
    [cell.contentView addSubview:nil]; 
    [displayBut setHidden:YES]; 
    [displayBut setBackgroundImage:nil forState:UIControlStateNormal]; 

} 
+0

Veuillez utiliser des commentaires ou mettre à jour votre question si vous avez besoin de solliciter ou de fournir plus d'informations. N'utilisez pas de réponses à cette fin. Merci. – Kev

+0

je voudrais également mettre le bouton pour être désactivé ('displayBut.enabled = FALSE') – LordT

+0

@Kev, merci –

Répondre

1

[Fusionnée mise à jour/question en réponse à OP]

2

Le 1er problème avec votre code est si condition - vous comparez pas les valeurs de chaîne, mais les valeurs de pointeur et donc ne vous bon résultat. La bonne façon de comparer les chaînes dans votre cas est d'utiliser -isEqualToString: méthode:

if ([filemodels.fileType isEqualToString:@"project"] && [filemodels.fileExpanse isEqualToString:@"none"]){ 
... 

Ensuite, si vous définissez précédemment le accessoryView de votre cellule pour être un displayBtn alors vous devrez peut-être le mettre à zéro d'utiliser des cellules accessoryType au lieu de votre vue personnalisée - la rendre juste cachée peut être insuffisante ici.

Questions connexes