2013-10-14 20 views
7

Sono perplesso sul motivo per cui questo codice non funziona. Ho un pulsante di accesso che voglio disattivare quando l'utente non è connesso aDisabilita UIButton a livello di codice

Ho un UIButton delared nel mio file .h in questo modo:.

IBOutlet UIButton *myBtn; 

ho creato un riferimento uscita in Interface Builder a questo pulsante.

Nel mio file .m, ho provato:.

[myBtn setEnabled: NO]; 

e

myBtn.enabled = NO; 

Ma nessuno di questi disattivare il tasto nell'istruzione condizionale sono in (voglio disabilita il pulsante di accesso quando l'utente accede correttamente)

Sono in grado di farlo con altri due pulsanti sullo stesso schermo, quindi so che il codice è corretto. Non lancio alcun errore, quindi penso che l'oggetto esista. Anche i riferimenti a myBtn cambiano colore in XCode, quindi sembra essere un riferimento valido.

Mi manca qualcosa. Cosa sto facendo di sbagliato qui? (Sono uno sviluppatore di Windows, relativamente nuovo a Objective-C)

+0

nel file .h, dovrebbe essere IBOutlet UIButton * myBtn. ha bisogno di un puntatore. Ma suppongo che potresti accorciarlo per gli scopi della domanda. Dove l'hai dichiarato? come una proprietà? se è così, ha bisogno di essere sintetizzato. – mashdup

+0

Ah, ho dimenticato l'asterisco (sto digitando su un altro computer) ... – Tim

+1

Aggiungi 'NSAssert (myBtn, @" Button is nil! ");' Nella riga prima di provare a disabilitare il pulsante.Se vedi un'eccezione 'myBtn' è nullo e non lo hai collegato ad un'istanza UIButton effettiva. –

risposta

7

Mi sembra ok. Sei il sintetizzatore del pulsante? Prova

self.myBtn.enabled = NO; 
1

Provate questo ..

In .h:

@property(nonatomic,retain)UIButton *myBtn; 

In .m:

@synthesize myBtn; 

E poi, sostituire il codice con [myBtn setEnabled: NO];[self.myBtn setEnabled: NO]; codice.

2

Si dovrebbe impostare il pulsante come IBOutlet.

@property (weak, nonatomic) IBOutlet UIButton *myBtn; 

In questo modo è possibile collegare tale pulsante negli storyboard. Quale potrebbe essere il tuo problema.

Quindi chiamare per disattivare.

[_myBtn setEnabled:NO]; 
1

Se siete alla ricerca di codice swift:

var button = UIButton() 
button.enabled = false //disable the button 
2

Se siete alla ricerca di una soluzione Swift3

var myBtn = UIButton() 
myBtn.isEnabled = true 
Problemi correlati