Ho diverse viste con pulsanti su di esso. Tutte queste viste sono collegate a un ViewController e in questo ViewController ho IBOutlet definite per tutti quei 50 pulsanti.
Per accedervi facilmente, ho archiviato tutti gli UIButton in aNSMutableArray multidimensionale. A scopo di test ho assegnato a tutti i pulsanti un nome univoco Etichetta. Gli UIButton sono correttamente memorizzati nell'array, posso verificarlo usando il labelLabel.
Dopo aver premuto un pulsante, chiamo un metodo:
-(IBAction)pushButton:(id)sender
Lì confronto:
if ( [allButtonsArray objectAtIndex:1] == sender )
// do something
Anche se il pulsante UIB selezionato dall'array e il pulsante mittente hanno lo stesso titoloLabel (che è unico nel mio caso), l'istruzione IF non è vera.
Anybode ha un'idea del perché?
Grazie, Pat
risposte:
0 per risposta № 1hai provato a lanciarli come UIButtons?
if ( (UIButton *)[allButtonsArray objectAtIndex:1] == (UIButton *)sender )
o usare isEqual
metodo invece di ==
inoltre, perché non solo confrontare titleLabel
anziché?
0 per risposta № 2
Ho appena emesso l'UIButton usando NSLog% @ che sto confrontando e ho scoperto che le informazioni come "Frame", "opaco" "CALayer" ecc. Sono le stesse, MA:
L'ID di memoria reale come "UIRoundedRectButton: = x4b3f7f0" è diverso Pertanto l'istruzione IF non è mai vera.
Quello che ho fatto ora è assegnare ogni UIButton inInterface-Builder un valore-tag specifico (nella sezione Visualizza). Questo tag è accessibile da [tag mittente] e può essere facilmente confrontato con un array numerico per verificare quale pulsante è stato premuto.