我已经搜索了很多但是找不到我的问题的解决方案。我有一个函数,当我点击其中一个UIBarButtonItem时,我想调用它作为选择器。我的UIViewController嵌入在导航控制器中。
在.h文件中
- (IBAction)EventsAction:(UIBarButtonItem *)sender;
在我的.m文件中,我在viewDidLoad方法中创建了我的UIBarButtonItems
UIBarButtonItem *composer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:self action:@selector(EventActions:)];
composer.tag = 0;
UIBarButtonItem *notifList = [[UIBarButtonItem alloc] initWithTitle:@"!N!" style:UIBarButtonItemStyleBordered target:self action:@selector(EventActions:)];
notifList.tag = 1;
NSArray *buttonArr = [[NSArray alloc] initWithObjects:composer, notifList, nil];
self.navigationItem.rightBarButtonItems = buttonArr;
该功能定义为:
- (IBAction)EventsAction:(UIBarButtonItem *)sender {
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"connection"]) {
if (sender.tag == 0) {
[self performSegueWithIdentifier:@"newEvent" sender:self];
}
if (sender.tag == 1) {
[self performSegueWithIdentifier:@"notificationView" sender:self];
}
}
else {
UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"NoConnectionTitle", nil) message:NSLocalizedString(@"NoConnection", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"Tamam", nil) otherButtonTitles:nil];
[myAlert show];
}
}
然而,当我运行此代码并点击其中一个按钮时,我收到无法识别的选择器错误
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [BIAllEventsController EventActions:]:无法识别的选择器发送到实例0x1ddc1400'
我也尝试将IBAction更改为void,但也没有解决我的问题。
修改
谢谢大家,抱歉这个愚蠢的错误。虽然它教授非常重要的课程,例如:
答案 0 :(得分:1)
您的代码中有拼写错误,您的方法名称为EventsAction
且 s ,但在此行中
UIBarButtonItem *composer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:self action:@selector(EventActions:)];
您使用EventActions
时没有 s 。您必须更改UIBarButtonItem
s。
答案 1 :(得分:0)
因为您的方法名称为EventsAction
,但您要将EventActions
(s错位)添加为barButton
的选择器。