iOS, sélecteur non reconnu envoyé à l'instance?

J'ai un écran principal avec un actionBar personnalisé importé. J'ai créé cette actionBar dans un file .xib séparé, avec un file .m et .h.

Je fais une configuration graphique dans viewDidLoad de mon viewDidLoad comme backgroundColor et d'autres choses.

J'ai aussi un button sur cette actionBar j'ai lié la façon dont je lie habituellement les buttons, avec un IBAction .

Je charge mon actionBar dans mon écran principal comme ceci:

 ActionBarWithLogoff *actionBar = [[ActionBarWithLogoff alloc] initWithNibName:@"ActionBarWithLogoff" bundle:nil]; [topBar addSubview:actionBar.view]; [actionBar release]; 

Mon actionBar.h:

 - (IBAction)ActionBarLogoff:(id)sender; 

Méthode de mon actionBars.m:

 -(void) ActionBarLogoff:(UIButton *)sender { NSLog(@"!!!!!!!!!!ActionBarLogoff"); } 

C'est à ce moment là que mon erreur a touché l'image, quand j'ai cliqué sur le button, j'ai l'erreur suivante:

2014-01-27 13: 52: 21.856 GB_Mobil_DK [2954: 60b] – [__ NSArrayM ActionBarLogoff:]: sélecteur non reconnu envoyé à l'instance 0x1656d880 2014-01-27 13: 52: 21.858 GB_Mobil_DK [2954: 60b] * Application de terminaison en raison de exception uncaught 'NSInvalidArgumentException', raison: '- [__ NSArrayM ActionBarLogoff:]: sélecteur non reconnu envoyé à l' instance 0x1656d880' * stack d'appel du premier jet: (0x2f94be83 0x39ca86c7 0x2f94f7b7 0x2f94e0af 0x2f89cdc8 0x32104da3 0x32104d3f 0x32104d13 0x320f0743 0x3210475b 0x32104425 0x320ff451 0x320d4d79 0x320d3569 0x2f916f1f 0x2f9163e7 0x2f914bd7 0x2f87f471 0x2f87f253 0x345b92eb 0x32134845 0x97985 0x3a1a1ab7) libc ++ abi.dylib: se terminant par une exception non interceptée de type NSException

Quelqu'un peut-il me dire pourquoi? et surtout capable de m'aider à résoudre ce problème ^^?

Vous actionBar instance d' actionBar et vous actionBar simplement sa view . Si l'instance d' actionBar répond à l'action du button, le message de clic sur le button est envoyé à l'instance supprimée. Vous devez conserver l'instance d' actionBar . Une façon de le faire est d'en faire un ivar ou une propriété de retain .

UIViewController vous créez un UIViewController pour une vue personnalisée. Au lieu de cela, vous pouvez créer simplement un UIView personnalisé avec son XIB.

MODIFIER

Déclarer conserver la propriété,

 @property (nonatomic, retain) ActionBarWithLogoff *actionBar; 

OU

Déclarez simplement comme ivar,

 @interface YourViewController: UIViewController { ActionBarWithLogoff *actionBar; } 

Et dans la méthode dealloc ,

 -(void) dealloc { //... [actionBar release]; //... } 

J'espère que cela pourra aider!