【问题标题】:How to pass instance of MKMapView to CLLocationManagerDelegate?如何将 MKMapView 的实例传递给 CLLocationManagerDelegate?
【发布时间】:2014-12-06 21:14:40
【问题描述】:

我已将我的appDelegate 类设置为CLLocationManager 的代表。在委托的didUpdateLocations 方法中,我创建了一条折线。我使用[self.firstViewController.currentMap addOverlay:self.polyline level:MKOverlayLevelAboveRoads] 将折线添加到地图视图中。但是,它对我的​​地图视图的实际实例没有影响,因为它认为self.firstViewController.currentMapnil。有没有办法以某种方式将地图实例传递给didUpdateLocations,以便将叠加层添加到MKMapView 的现有实例?

【问题讨论】:

  • 如果它认为self.firstViewController.currentMapnil,它就是nil。您可以尝试正确设置它,如果没有看到任何代码,我们无法告诉更多。您可以添加一个指向 appDelegate 的弱指针,当您创建 MKMapView 对象时,您可以使该指针指向它。然后,您将拥有指向该 MKMapView 对象的直接指针,而不是使用 firstViewController 代理。
  • 非常感谢!将MKMapView 作为弱属性添加到AppDelegate,然后在地图视图控制器的viewDidLoad 方法中设置appDelegate.currentMap = self.currentMap 对我有用。

标签: ios objective-c delegates mkmapview cllocationmanager


【解决方案1】:

您不能在委托方法中传递额外的参数。委托方法的方法签名是固定的。

但是,这不是正确的解决方案。听起来您在 cmets 中获得了帮助,但可以解决此问题。

【讨论】:

    猜你喜欢
    • 2020-12-05
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多