Domanda

Ho diversi NSButtons che sono attaccati ad un singolo IBAction. Ho bisogno di differenziare all'interno del metodo tra i diversi pulsanti. Ho provato quanto segue, ma non funziona:

for (int i = 0; i++; i < 7) {
    if (sender == [NSString stringWithFormat:@"button%i", i+1]) 
    {
        NSLog(@"sender is button %i", i+1);
    }
}

Come può questo essere fatto per il lavoro?

È stato utile?

Soluzione

-(IBAction)buttonPressed:(id)sender
{
    switch ( [sender tag] )
    {
    case 1:
    //blah blah blah
    break;

    case 2:
    //blah blah etc.
    break;
    }
}

Sono contrario a fare il lavoro per voi, ma ....

sostituire questa riga

if (sender == [NSString stringWithFormat:@"button%i", i+1]) 

con questa linea

if ([sender tag] == i) 

Nota anche che il formato del ciclo for non è valido:

for (int i = 0; i++; i < 7)

s / b:

for (int i = 0; i < 7; i++)

Altri suggerimenti

mittente nell'azione btnClicked è l'oggetto tasto che è stato cliccato. Dal che si dovrebbe essere in grado di ottenere le informazioni necessarie

-(IBAction) btnClicked: (id) sender {
  NSLog(@"Button clicked %@", sender);
  // Do something here with the variable 'sender'
}

Se si memorizza un valore nella sender.tag, è possibile determinare il pulsante in questo modo anche

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top