在常量初始化中使用IBoutlet

时间:2014-10-27 11:44:49

标签: ios xcode swift

我想在MapManager中使用IBOutlet mapView。要实现此连接,我必须将mapView呈现给MapManager。我觉得这样的事情会奏效:

 @IBOutlet var mapView: MKMapView!
    var locationManager = CLLocationManager()
    var userLocation: MKUserLocation!
    let mapManager: MapManager = MapManager(MapView : mapView)

现在,我想知道这是否是一种正确的方法。我的意思是,我基本上会在一个模型中使用mapView,这不是最好的事情。那么我该如何实现这个想法呢?

1 个答案:

答案 0 :(得分:1)

我认为您的代码不应该编译,因为在初始化mapManager时,您隐式引用self,这在所有类属性初始化之前都不可用。

我会通过定义一个隐式解包的mapManager属性来解决这个问题:

var mapManager: MapManager!

在设置mapView时初始化:

@IBOutlet var mapView: MKMapView! {
    didSet {
        self.mapManager = MapManager(MapView: mapView)
    }
}

当然,在引用mapManager之前,您必须确保mapView已经初始化,否则将引发运行时异常。