2013-03-21 17 views
9

Devo disabilitare un pulsante se la chiave non esiste nel dizionario. Ho usato la funzionalità setEnabled di UIButton ma l'immagine che è stata impostata come predefinita appare ancora.Disattivazione di un pulsante in iOS

Il codice simile a questo:

if([self.InfoDictionary objectForKey:ButtonExist]) 
{ 
    [button1 setEnabled:YES]; 
} 
else 
{ 
    [button1 setEnabled:NO]; 
} 

L'immagine appare ancora quando ho eseguito nel simulatore. Hai bisogno di una guida su questo.

+0

'enabled' controlla se il tasto fa niente. Puoi usare 'hidden' per renderlo invisibile, o impostare' alpha' tra '0.0' e' 1.0' per renderlo in grigio. –

+0

cos'è ButtonExist? è questa chiave? – Pratik

risposta

10

enable = YES proprietà del pulsante esegue l'azione quando si fa clic.

enable = NO proprietà impedisce l'azione da eseguire al clic.

Se si desidera nascondere il pulsante, è possibile impostare la proprietà hidden come YES o viceversa. Un altro modo per nascondere è impostare la proprietà alpha su 0 (invisibile) o 1 (visibile)

2

uso:

if([self.InfoDictionary objectForKey:ButtonExist]) 
{ 
    [button1 setHidden:YES]; 
} 
else 
{ 
    [button1 setHidden:NO]; 
} 

se si desidera nascondere UIImage di UIButton poi:

if([self.InfoDictionary objectForKey:ButtonExist]) 
    { 
     [button1 setBackgroundImage:[UIImage imageNamed:@"YOUR IMAGE"] forState:UIControlStateNormal]; 
    } 
    else 
    { 
     [button1 setBackgroundImage:[UIImage imageNamed:@""] forState:UIControlStateNormal]; 
    } 

Spero che questo vi aiuterà. Tutto il meglio !!!

+0

Pensavo che nascosto sia usato per le visualizzazioni? ho ragione? – lakesh

+0

UIButton è una sottoclasse UIView. – Jsdodgers

+0

Funzionerà anche con UIButton. – Yashesh

6

Inoltre è possibile impostare la proprietà di userInteractionEnabledUIButton

if([self.InfoDictionary objectForKey:ButtonExist]) 
    { 
     [button1 setEnabled:YES]; 
     button1.userInteractionEnabled = YES; 
    } 
    else 
    { 
     [button1 setEnabled:NO]; 
     button1.userInteractionEnabled = NO; 
    } 
+0

Questo non risolve il problema dell'OP che le immagini appaiono ancora. –

+0

sì. non risolve il problema delle immagini che appaiono ancora .. – lakesh

0

Rannicarsene. Il problema era che stavo inavvertitamente abilitando il pulsante in un gestore di gesti per toccare!

Cerca effetti collaterali come questo.

1

in swift3:

self.button.isEnabled = false 
Problemi correlati