UIImageView在UITabBarController子类中始终为零

问题描述 投票:0回答:1
class MyTabController: UITabBarController {

    @IBOutlet var backgroundImageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.backgroundImageView.image = UIImage(named: "some image")
    }
}

我得到Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

我尝试在其他位置(例如viewDidAppear或tabBar:didSelect)设置backgroundImageViewbackgroundImageView始终为零。我怀疑这与成为UITabBarController子类有关,但是我看不到任何无法添加子视图的原因。为什么总是为零?是的,IBOutlet已正确连接。我已经在其他UIViewControllers中尝试了相同的代码,并且效果很好。

更多信息:该类是这样实例化的:

private var myTabController: MyTabController = MyTabController.instantiate()

where

extension Storyboardable where Self: UIViewController {

static var storyboardName: String {
    return "Main"
}

static var storyboardBundle: Bundle {
    return .main
}

static var storyboardIdentifier: String {
    return String(describing: self)
}

static func instantiate() -> Self {
    guard let viewController = UIStoryboard(name: storyboardName, bundle: storyboardBundle).instantiateViewController(withIdentifier: storyboardIdentifier) as? Self else {
        fatalError("Unable to Instantiate View Controller with identifier \(storyboardIdentifier)")
    }
    return viewController
}

}

ios swift uiimageview uitabbarcontroller
1个回答
0
投票

也许你愿意

let tab =  MyTabController()

由于未从情节提要中加载选项卡,因此将使所有出口都为零

let tab = storyboard.instantiateViewControllerWithIdentifier("tabId")
© www.soinside.com 2019 - 2024. All rights reserved.