class AClass: UIViewController,CLLocationManagerDelegate,MKMapViewDelegate {
@IBOutlet var mapKitView: MKMapView!
}
class BClass: UITableViewController {
var localAClass=AClass()
localAClass.mapKitView.mapType=MKMapType.standard
}
致命错误:解开可选值时意外发现nil
答案 0 :(得分:0)
在ClassB中,您需要使用UIStoryboard instantiateViewController(withIdentifier:)
来实例化IBOutlet。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController =
storyboard.instantiateViewController("AClassIdentifier") as!
AClass
然后,直到该类的viewDidLoad()都不会实例化IBOutlets视图。您的ClassA
需要第二个属性,例如mapType
,并且ClassB
会设置该属性,而不是直接在视图上。然后,您可以在ClassA viewDidLoad
中基于此存储的属性来设置实际的mapView。