如果IBOutlet在UIViewController类中,则如何访问UITableViewController类中的IBOutlet

时间:2018-11-05 18:47:21

标签: ios swift uitableview

enter image description here

 class AClass: UIViewController,CLLocationManagerDelegate,MKMapViewDelegate {

        @IBOutlet var mapKitView: MKMapView!

        }

    class BClass: UITableViewController {

    var localAClass=AClass()
    localAClass.mapKitView.mapType=MKMapType.standard 

    }
  

致命错误:解开可选值时意外发现nil

1 个答案:

答案 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。