/ / xcode iphone Confronta UIButton da: mittente (id) con UIButtons dall'array: xcode, uiview, if-statement, nsmutablearray, compare

xcode iphone Confronta UIButton da: (id) mittente con UIButtons da Array - xcode, uiview, if-statement, nsmutablearray, compare

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 № 1

hai 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.