-[UIView setRegion:animated:]: 无法识别的选择器发送到实例

Posted

技术标签:

【中文标题】-[UIView setRegion:animated:]: 无法识别的选择器发送到实例【英文标题】:-[UIView setRegion:animated:]: unrecognized selector sent to instance 【发布时间】:2012-12-05 08:32:28 【问题描述】:

我是 Objective C 的初学者。在导航控制器中选择 TableRow 后,我正在设置 Mapview。我收到了终止应用程序的错误。

-[UIView setRegion:animated:]: unrecognized selector sent to instance 0x806b2c0

这是我对 Mapview 的 viewWillAppeer

- (void)viewWillAppear:(BOOL)animated 

    CLLocationCoordinate2D zoomLocation;
    zoomLocation.latitude = 39.281516;
    zoomLocation.longitude= -76.580806;

    if (CLLocationCoordinate2DIsValid(location)) 
        MKCoordinateRegion mapRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 0.5*METERS_PER_MILE, 0.5*METERS_PER_MILE);

        [_mapView setRegion:mapRegion animated:YES];
     else 
        NSLog(@"Invalid coordinates");
    

此导入 mapkit 和 corelocation 的头文件并具有此属性。

@property (weak, nonatomic) IBOutlet MKMapView *mapView;

头文件包括 mapkit 和 coreelocation,使这个属性变得强大也没有改变任何东西。

【问题讨论】:

您的 _mapView 对象在方法调用时已损坏。 你能确保 IBoutlet 已连接吗? 我想我忘了在 mapView 上进行分配 什么?? “忘记分配”? - 这是一个 IBoutlet。你是明确分配的吗? - 它应该已经链接到 XIB 的 Mapview。 糟糕!它只是抑制了错误,所以我认为这可能是问题所在。我有一个故事板和排水沟显示我连接了我的 IBOutlet。仍然出现同样的错误 【参考方案1】:

发生这种情况是因为我之前在我的 LocateItemViewController(具有地图视图的控制器)上连接了一个名为“mapView”的插座,并且从未从“Connections Inspector”中删除它。

请参阅 Outlets 部分下名为“view”的灰色插座,我有一个类似的名为 mapView 的插座

【讨论】:

这正是我的问题。谢谢!!【参考方案2】:

变量_mapView 被修改为UIView。该函数属于MKMapView,而不是UIView

参考:http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html

【讨论】:

我对@9​​87654327@的函数调用和对@property (weak, nonatomic) IBOutlet MKMapView *mapView;的属性调用 在问题代码中尝试NSLog(@"%@", _mapView);。我想知道它设置为什么值。 带有NSLog(@"%@",self.mapView);的控制台截图:snag.gy/fC1wd.jpg 真的是UIView!你最好找到并替换_mapView,看看你给它分配了什么。 控制器绝对是 UIView 的子类,但我的属性定义明确指出它是 MKMapView。我没有自定义设置器。

以上是关于-[UIView setRegion:animated:]: 无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章