首页 > 解决方案 > 如果 IBOutlet 在 UIViewController 类中,如何访问 UITableViewController 类中的 IBOutlet

问题描述

在此处输入图像描述

 class AClass: UIViewController,CLLocationManagerDelegate,MKMapViewDelegate {

        @IBOutlet var mapKitView: MKMapView!

        }

    class BClass: UITableViewController {

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

    }

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

标签: iosswiftuitableview

解决方案


在 ClassB 中,您需要使用UIStoryboard instantiateViewController(withIdentifier:)IBOutlets 实例化。

let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let viewController = 
storyboard.instantiateViewController("AClassIdentifier") as! 
AClass

然后,直到该类的 viewDidLoad() 才实例化 IBOutlets 视图。您ClassA将需要第二个属性,例如mapType, 并ClassB设置该属性而不是直接在视图上。然后,ClassA viewDidLoad您可以根据此存储的属性设置实际的 mapView。


推荐阅读