2010-06-30 6 views
0

j'ai mis un bouton sur une toolbar.But quand j'appuyez sur ce bouton, mon sélecteur est pas appelé et application se bloque donnant erreur suivantcommande ne pas atteindre au sélecteur

en raison de l'application Mettre fin exception uncaught « NSInvalidArgumentException », la raison : '*** - [ChatViewController changeButtonImage]: sélecteur non reconnu envoyé à l'instance 0x119570'

voici mon code ..

UIToolbar *toolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(5,0,310,44)]; 
UIBarButtonItem *changeImagebtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemOrganize 
                        target:self 
                        action:@selector(changeButtonImage)]; 




    UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                       target:nil 
                       action:nil]; 

    UIBarButtonItem *textField = [[UIBarButtonItem alloc] initWithCustomView:peerName]; 

    NSArray *items = [NSArray arrayWithObjects:textField,flexItem,flexItem,changeImagebtn,nil]; 
    [toolBar setItems:items animated:NO]; 
[self.view addSubview:toolBar]; 

mon bloc d'action est ----

-(void)changeButtonImage:(id)sender 
{ 
    UIImagePickerController *pic=[[UIImagePickerController alloc] init]; 
    pick=pic; 
    pick.delegate=self; 

    pick.sourceType=UIImagePickerControllerSourceTypePhotoLibrary; 
    [self presentModalViewController:pick animated:YES]; 
} 

où je me trompe ... S'il vous plaît me suggérer

+0

Votre méthode prend l'argument de type id mais lorsque vous appelez la méthode, vous ne donnez aucun argument! Et vérifiez également que vous devez déclarer la méthode dans votre fichier .h. – raaz

Répondre

1

Au lieu de

action:@selector(changeButtonImage) 

il doit être:

action:@selector(changeButtonImage:) 
+0

c'était vraiment le cas! Merci .. – Ajayvictor007

0

j'aurais dit qu'au lieu de:

-(void)changeButtonImage:(id)sender {} 

Vous le feriez utiliser:

-(void)changeButtonImage {} 

qui fonctionne parfaitement bien pour moi dans mes applications et vous n'utilisez pas l'expéditeur dans votre code de la méthode de toute façon.

EDIT: Bien sûr, rappelez-vous que si vous alliez le faire, modifiez également votre définition dans le fichier d'en-tête.