[英]NSInvalidArgumentException - setAllHTTPHeaderFields
[英]'NSInvalidArgumentException'
我在地图中有一些注解视图,我希望通过touchUpInside打开一个新的ViewController,但出现此错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-
[MapViewController loadDetailListViewController:]: unrecognized selector sent
to instance 0xa042380'
这是MapViewController.m中的代码:
-(void)loadDetailListViewController{
if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPhone){
DetailListViewController *detailList =[[DetailListViewController
alloc]initWithNibName:@"DetailListViewController~iPhone" bundle:nil];
detailList.title = self.chinaTable.title;
detailList.chinaTable = self.chinaTable;
[self.navigationController pushViewController:detailList animated:YES];
}else {
DetailListViewController *detailList =[[DetailListViewController
alloc]initWithNibName:@"DetailListViewController~iPad" bundle:nil];
detailList.title = self.chinaTable.title;
detailList.chinaTable = self.chinaTable;
[self.navigationController pushViewController:detailList animated:YES];
}
}
- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id
<MKAnnotation>)annotation {
//......
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action:@selector(loadDetailListViewController:)
forControlEvents:UIControlEventTouchUpInside]; //the error is here
//....
}
更改
@selector(loadDetailListViewController:)
至
@selector(loadDetailListViewController)
原因: @selector(abc)
给出方法abc
的选择器,不带任何参数。 @selector(abc:)
给出了该方法的选择abc
与一个参数。 因此,@selector @selector(abc::)
为方法abc
的选择器提供了两个参数对象。
Objective-C是多态的。 意味着同一方法可能存在多次。 这意味着它们具有相同的名称,并被多次实施以提供方法的变体,具体取决于参数的数量(或者如果在选择器语句中也给出了参数的名称,则取决于参数的名称)。
严格说出的abc
和abc:
和abc::
可能完全不同并且彼此独立。 但这将是非常糟糕的风格。 相当普遍的是,这些方法或多或少都具有相同的功能,而其功能只是在细节上因传递给它的不同值而有所变化。
在选择器中使用loadDetailListViewController
而不是loadDetailListViewController:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.