IBAction für UIButton Bewirkt, dass ein unbekannter Selektor geschickt Instanz Fehler (iOS)
Ich habe Schwierigkeiten, einige UIButtons zu rufen Aktionen in meiner Tab-Leiste Anwendung.
Meine .h-Datei:
#import <UIKit/UIKit.h>
@interface ContactViewController : UIViewController {
UIButton *callTollFreeButton;
UIButton *callLocalButton;
UIButton *emailButton;
}
@property (nonatomic, retain) IBOutlet UIButton *callTollFreeButton;
@property (nonatomic, retain) IBOutlet UIButton *callLocalButton;
@property (nonatomic, retain) IBOutlet UIButton *emailButton;
-(IBAction)callPhone:(id)sender;
-(IBAction)callTollFree:(id)sender;
-(IBAction)clickEmailButton:(id)sender;
@end
Meine .m-Datei:
#import "ContactViewController.h"
@implementation ContactViewController
@synthesize callLocalButton,callTollFreeButton,emailButton;
-(IBAction)callPhone:(id)sender {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:7576236600"]];
}
-(IBAction)callTollFree:(id)sender{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:8003334645"]];
}
-(IBAction)clickEmailButton:(id)sender{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:[email protected]?subject=Hello"]];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
//Custom initialization
}
return self;
}
- (void)dealloc
{
[callLocalButton release];
[callTollFreeButton release];
[emailButton release];
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
//Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
//Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
//Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
//Release any retained subviews of the main view.
//e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
//Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
Meine .m-Datei:
Die Fehlermeldung die ich bekomme ist (ich bekomme eine Fehlermeldung für jede Schaltfläche geklickt wird, dieses ist auf die e-mail-Schaltfläche im besonderen):
2011-11-19 18:39:38.786 Miller Tab Bar[761:207] -[UIViewController clickEmailButton:]: unrecognized selector sent to instance 0x6b29f40
2011-11-19 18:39:38.790 Miller Tab Bar[761:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController clickEmailButton:]: unrecognized selector sent to instance 0x6b29f40'
Habe ich versucht, die Verbindung und schließen Sie die outlets und Aktionen für die Objekte auf den view-controller. Ist es möglich, dass es abstürzt, weil das SDK nicht ausführen können, testen Sie Anrufe oder e-mails?
Tippte ich 'po 0x6b328d0' in den debugger, um herauszufinden, was das problem-Objekt ist und es kam zurück als ein UIViewController das bedeutet möglicherweise, dass der View-Controller wird veröffentlicht, bevor die Aktion aufgerufen wird? Was würde verursachen, dass?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem Feder-oder storyboard, es sieht aus wie Ihre view-controller-Instanz vom Typ UIViewController statt ContactViewController.
So wählen Sie den view-controller in Ihrem Nib (oder storyboard), und ändern Sie Ihren Typ auf ContactViewController.
Natürlich, wenn diese view-controller nicht geladen wird, aus einer Feder oder storyboard, dann prüfen Sie einfach, wo Sie Sie erstellen, und stellen Sie sicher, dass Sie erstellt eine Instanz der richtigen Klasse.
Es ist ein bisschen Bizarr. Ich denke, dein viewcontroller nicht richtig eingestellt.
Der bizarre Teil ist, sollte Sie nicht in der Lage sein, die Aktionen, wenn es nicht richtig eingerichtet ist (Datei-Besitzer - ContactViewController)
Wenn ich eine E-unrecognized selector, um eine benutzerdefinierte ViewController, es sagt
-[customViewController foo]: unrecognized selector geschickt Instanz 0x6a2b440
Scheint es die xib-die tatsächliche Datei-Besitzer instanziiert wird als ein UIViewController
UIViewController(nibName: "MyViewController", bundle: Bundle.main)
stattMyViewController(nibName: "MyViewController", bundle: Bundle.main)
. Danke!Ändern versuchen:
zu
Und Haken bis die
UILabels
jeweiligen Tasten. Sehen, ob das hilft.