我有一个方法@selector,其参数类型为NSString。当我编译应用程序时,我收到此错误
No visible @interface for 'UIButton' declares the selector 'addTarget:action:
withObject:forControlEvents
该方法在头文件中声明。 这是代码:
-(void)loadDetailListViewController: (NSString *)nameTable{
//......
}
- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id
<MKAnnotation>)annotation
{
//.....
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action: @selector(loadDetailListViewController:)
withObject:self.nameTable forControlEvents:UIControlEventTouchUpInside];
//here the error
//.....
}
我不知道括号是否正确
答案 0 :(得分:2)
该方法不存在。这样做
[rightButton addTarget:self action: @selector(loadDetailListViewController:) forControlEvents:UIControlEventTouchUpInside];
如果你需要将一个字符串传递给该方法,我建议使用字符串属性对UIButton进行子类化,然后在那里设置它。该按钮在选择器中作为参数传递,因此您可以从那里获取它和字符串:
- (void)loadDetailListViewController:(MyCustomButtonClass *)button {
// access the string from the button
}
答案 1 :(得分:0)
UIButton(UIControl)没有像您使用的那样签名。
删除withObject
即可。您可以考虑删除tableName
参数,因为它是对象属性,可以直接读取。
文档:
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
答案 2 :(得分:0)
试试这个
-(void)loadDetailListViewController: (id)sender{
//......
}
- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id
<MKAnnotation>)annotation
{
//.....
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action: @selector(loadDetailListViewController:)
forControlEvents:UIControlEventTouchUpInside];
//here the error
//.....
}
答案 3 :(得分:0)
该错误表明编译器找不到可以在'addTarget:action:
withObject:forControlEvents
上调用的名为UIButton
的方法。
UIControl
的方法为addTarget:action:forControlEvents:
,但不包含“ withObject:”的方法
答案 4 :(得分:0)
没有这样的方法addTarget:action: withObject: forControlEvents
使用:
[rightButton addTarget:self action: @selector(loadDetailListViewController:) forControlEvents:UIControlEventTouchUpInside];
您不需要将self.nameTable传递给此方法,您可以在loadDetailListViewController中访问它:很好
答案 5 :(得分:0)
没有类似的方法:addTarget:(id)target action:(SEL)action withObject:(id) forControlEvents:(UIControlEvents)controlEvents
将其更改为:addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
请参阅:UIControl Class