2009-11-09 5 views
0

Alors, je suis en train de joindre programme gestionnaires d'événements aux widgets que je l'ai mis sur mon application iPhone à l'aide:gestionnaires d'événements attachés Programmatically

 
addTarget:action:forControlEvents 

J'ai ajouté un UISegmentedControl dans Interface Builder qui est exposée à travers @property seg et loadview, j'ai:

 
- (void)loadView 
{ 
    [ super loadView ] ; 

    //k after that attach our own event handlers 
    [ seg addTarget:seg action:@selector(sliderEventIB) forControlEvents:UIControlEventAllEvents ]; 
} 

sliderEventIB, juste nous dit qu'il se sent l'événement:

 
-(IBAction)sliderEventIB:(id)sender forEvent:(UIEvent*)event 
{ 
    puts("I feel you joanna") ; 
} 

mais l'erreur que je reçois est

 
ViewControllersTest[6744:207] *** -[UISegmentedControl sliderEventIB]: 
unrecognized selector sent to instance 0x3b21b30 

Toute idée de ce qu'il ne comme ici?

Répondre

2

Il semble que vous avez juste oublié d'insérer le côlon dans addTarget:

[ seg addTarget:seg action:@selector(sliderEventIB:) forControlEvents:UIControlEventAllEvents ];

Il devrait être sliderEventIB: non sliderEventIB.

0

Eh bien, le UISegmentedControl n'a pas la méthode 'sliderEventIB'.

La section 'addTarget' de la méthode demande: "Qui dois-je informer lorsqu'un événement se produit?". Dans ce cas, vous avez spécifié que UISegmentedControl doit être informé et qu'il doit appeler sliderEventIB sur cet objet. Au lieu de cela, vous devriez dire

[seg addTarget:self action:@selector(sliderEventIB) forControlEvents: UIControlEventAllEvents]

1

Le code approprié est en tant que tel:

- (void)loadView 
{ 
    [super loadView]; 
    [seg addTarget:self action:@selector(sliderEventIB:forEvent:) forControlEvents:UIControlEventAllEvents]; 
} 
- (IBAction)sliderEventIB:(id)sender forEvent:(UIEvent*)event 
{ 
    NSLog(@"I feel you joanna"); 
} 

Notez que le procédé possède le même sélecteur comme il est enregistré à l'aide addTarget:action:forControlEvents.

Questions connexes