我想在MapManager中使用IBOutlet mapView。要实现此连接,我必须将mapView呈现给MapManager。我觉得这样的事情会奏效:
@IBOutlet var mapView: MKMapView!
var locationManager = CLLocationManager()
var userLocation: MKUserLocation!
let mapManager: MapManager = MapManager(MapView : mapView)
现在,我想知道这是否是一种正确的方法。我的意思是,我基本上会在一个模型中使用mapView,这不是最好的事情。那么我该如何实现这个想法呢?
答案 0 :(得分:1)
我认为您的代码不应该编译,因为在初始化mapManager
时,您隐式引用self
,这在所有类属性初始化之前都不可用。
我会通过定义一个隐式解包的mapManager
属性来解决这个问题:
var mapManager: MapManager!
在设置mapView
时初始化:
@IBOutlet var mapView: MKMapView! {
didSet {
self.mapManager = MapManager(MapView: mapView)
}
}
当然,在引用mapManager
之前,您必须确保mapView
已经初始化,否则将引发运行时异常。