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)设置backgroundImageView
。 backgroundImageView
始终为零。我怀疑这与成为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
}
}
也许你愿意
let tab = MyTabController()
由于未从情节提要中加载选项卡,因此将使所有出口都为零
let tab = storyboard.instantiateViewControllerWithIdentifier("tabId")