0
我有一个符合NSObject, MKMapViewDelegate
的子类 - 并已将其分配给mapView.delegate
属性,但委托方法没有被调用。我如何正确地将MKMapViewDelegate
进行子类化并将该类设置为委托?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 - 该方法会被调用。所以我假设我要么没有正确的继承或正确地实例化子类。
地图视图将不保留其委托,所以您创建的委托会在之后立即解除分配。您必须将其保存在视图控制器的属性中。 – dan
模糊了swift如何处理这个问题,但是这会由于weak引用而导致在objective-c中产生,以及您没有任何事物持有委托对象,因此只要该函数离开作用域就会释放它。 ..只是一个想法... – Mike
@丹该死......你打败了我:) – Mike