【发布时间】:2017-07-14 09:59:39
【问题描述】:
我有一个符合NSObject, MKMapViewDelegate- 的子类,并将其分配给mapView.delegate 属性,但是没有调用委托方法。如何正确继承 MKMapViewDelegate 并将该类设置为委托?
import UIKit
import MapKit
class HomeVC: ViewController {
@IBOutlet weak var mapView: MKMapView! didSet {
mapView.delegate = MyMapViewDelegate()
}
}
class MyMapViewDelegate: NSObject, MKMapViewDelegate {
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
print("Not being called")
return renderer
}
}
当我让 HomeVC 符合 MKMapViewDelegate 时 - 该方法将被调用。所以我假设我没有正确子类化或正确实例化子类化对象。
【问题讨论】:
-
地图视图不会保留其委托,因此您创建的委托会在之后立即被释放。您必须将其保存在视图控制器的属性中。
-
模糊处理这个问题的速度,但这会在objective-c中由于弱引用和你没有任何东西持有委托对象的事实而引起,所以它被释放为一旦该功能离开范围......只是一个想法......
-
@dan 该死的......你打败了我 :)
-
欣赏!小事总是惹事的哈哈
标签: ios swift inheritance mapkit subclass