我在工具栏上放了一个按钮。但是当我按下那个按钮时,我的选择器没有被调用,应用程序崩溃,发出以下错误
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'*** - [ChatViewController changeButtonImage]:无法识别的选择器发送到实例0x119570'
这是我的代码..
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];
我的动作块是----
-(void)changeButtonImage:(id)sender
{
UIImagePickerController *pic=[[UIImagePickerController alloc] init];
pick=pic;
pick.delegate=self;
pick.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:pick animated:YES];
}
我哪里错了?请建议我......
答案 0 :(得分:1)
而不是
action:@selector(changeButtonImage)
必须是:
action:@selector(changeButtonImage:)
答案 1 :(得分:0)
我会说而不是:
-(void)changeButtonImage:(id)sender {}
你会使用:
-(void)changeButtonImage {}
在我的应用中,这对我来说非常合适,而且您还没有在方法代码中使用发件人。
编辑:当然要记住,如果你打算这样做,那么也要在头文件中修改你的定义。