【问题标题】:-[UIView setRegion:animated:]: unrecognized selector sent to instance-[UIView setRegion:animated:]: 无法识别的选择器发送到实例
【发布时间】: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。仍然出现同样的错误

标签: objective-c ios ios6 mapkit core-location


【解决方案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。我没有自定义设置器。
猜你喜欢
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多