IOS UIBarButtonItem funktioniert gut, während UIButton Ursachen Unrecognized Selector Geschickt Instanz
Ich versuche zu implementieren ist eine custom navigation bar button item, ich habe einen Auswahlbereich, wenn der Benutzer klickt auf der Menüleiste eine Funktion aufgerufen wird.
Wenn ich in der Menüleiste auf UIBarButtonItem
es funktioniert einfach einwandfrei, aber ich habe zu verwenden ein benutzerdefiniertes Bild für den button ohne Grenzen und angeeignet Größe.
so, in viewdidload-ich nenne
- (void)viewDidLoad
{
[super viewDidLoad];
//gear button on navigation Bar
UIImage* imageback2 = [UIImage imageNamed:@"ICON - [email protected]"];
CGRect frameimgback2 = CGRectMake(0, 0, 40, 40);
UIButton *backButton2 = [[UIButton alloc] initWithFrame:frameimgback2];
[backButton2 setBackgroundImage:imageback2 forState:UIControlStateNormal];
[backButton2 addTarget:self
action:@selector(setColorButtonTapped:)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *btn2 = [[UIBarButtonItem alloc] initWithCustomView:backButton2];
UIBarButtonItem *btn3 =[[UIBarButtonItem alloc] initWithImage:imageback2 style:UIBarButtonItemStylePlain target:self action:@selector(setColorButtonTapped:)];
self.navigationItem.rightBarButtonItem = btn2;
}
#pragma mark Callbacks
- (IBAction)setColorButtonTapped:(id)sender{
if (_colorPicker == nil) {
self.colorPicker = [[ColorPickerController alloc] initWithStyle:UITableViewStylePlain];
_colorPicker.delegate = self;
self.colorPickerPopover = [[UIPopoverController alloc] initWithContentViewController:_colorPicker];
}
[self.colorPickerPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
gibt mir:
-[UIButton view]: unrecognized selector sent to instance 0x9466620
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIButton view]: unrecognized selector sent to instance 0x9466620'
Wenn ich
self.navigationItem.rightBarButtonItem = btn2;
zu
self.navigationItem.rightBarButtonItem = btn3;
Es funktioniert gut, aber die Schaltfläche Rahmen und hintergrund, Farbe und Größe von Bild
Also warum es gibt mir Fehler und wie kann ich diese Schaltfläche eine benutzerdefinierte Schaltfläche?
Edit:
Wenn ich eine void-Funktion wie
- (void)gearTapped{
[self setColorButtonTapped:self];
}
und ändern selector-Taste, es gibt keine Fehler aber es zeigt popUp nur eine Zeile ein in der Mitte des Bildschirms
[backButton2 addTarget:self
action:@selector(gearTapped)
forControlEvents:UIControlEventTouchUpInside];
Es normalerweise funktionieren sollte, aber mit einer benutzerdefinierten Schaltfläche
- Seine arbeiten 4 mich zu { Anfang mit dieser iphone-code stackoverflow.com/questions/11161909/... }
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergeben Sie eine
UIButton
Instanz alssender
argument für Ihre Aktion. Dann vorbeisender
als parameter an eine Methode erwartet einenUIBarButtonItem
Beispiel hier:Wenn Sie gehen, um die
sender
argument, in Ihren Handlungen, Sie sollten stellen Sie verschiedene Aktionen für die zwei verschiedene Klassen von Objekten. Wie:Dann wo ordnen Sie die Ziele und Aktionen:
Hoffe, das hilft!
-(void)popUp{ [self setColorButtonTapped:self]}
und ändern selector-Taste[backButton2 addTarget:self action:@selector(popUp)
dies nicht, geben Sie mir einen Fehler, zeigt aber das popUp nur oneline und in der Mitte des BildschirmsCheers...
-[UIButton view]: unrecognized selector sent to instance 0xa35ba50
UIButton* backButton2 = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = frameimgback2;
Dein Fehler ist wahrscheinlich, weil Sie, sollten Sie nicht initialisieren einer
UIButton
mitalloc
/initWithFrame
aber mit seinerbuttonWithType:
entwickelt Initialisierer (und festlegen des Rahmens getrennt, so).