首页 > 解决方案 > Storyboard / Swift 所有 IBOutlets 和 _view 都是 nil

问题描述

我正在开发一个 Swift 应用程序并遇到了一个疯狂的奇怪问题。我有一个简单的故事板视图控制器设置,它有 3 个UIButtonsaUIImageView和一个UIView(作为主视图的子视图)。

我想以编程方式将 a 添加WKWebViewUIView.

够容易吧?以上所有内容都在 Storyboard View 中,在自定义UIViewController类中声明并在 IB 中连接。然而在运行时,一切都是零。这是我的代码片段:

@IBOutlet var button1 : UIButton!;
@IBOutlet var button2 : UIButton!;
@IBOutlet var button3 : UIButton!;

@IBOutlet weak var containerForWebView: UIView!

var webView: WKWebView!

override func loadView()
{

}


override func viewDidLoad()
{
    super.viewDidLoad()

    displayWebPage()
}

override func viewWillAppear(_ animated: Bool)
{
    super.viewWillAppear(animated)


}

override func viewDidLayoutSubviews()
{
    super.viewDidLayoutSubviews()

}

private func displayWebPage()
{

    webView = WKWebView()
    webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    webView.frame = CGRect(origin: CGPoint.zero, size: containerForWebView.frame.size)
    webView.navigationDelegate = self

    containerForWebView.addSubview(webView)
    let url = URL(string: "https://www.google.com")!
    webView.load(URLRequest(url: url))
}

当代码调用displayWebPage()我在第一行中断的方法时。在调试器中你可以看到所有的UIViewController属性都是 nil。IBOutlets 为 Nil,其自身的 _view 变量UIViewController为 nil。

我不明白为什么会这样。一切都非常简单且易于连接。我从未在 Objective-C 中遇到过此类问题。任何建议表示赞赏!

在此处输入图像描述

在此处输入图像描述

标签: swiftinterface-builder

解决方案


删除loadView实施。不要覆盖该方法,请始终使用viewDidLoad

如果您覆盖loadView,那么您负责创建控制器的视图并将其分配给self.view.


推荐阅读