Storyboard / Swift 所有 IBOutlets 和 _view 均为 nil
Storyboard / Swift all IBOutlets and _view are nil
我正在开发一个 Swift 应用程序并且 运行 遇到了一个疯狂的奇怪问题。我有一个简单的故事板视图控制器设置,它有 3 UIButtons
一个 UIImageView
和一个 UIView
(作为主视图的子视图)。
我想以编程方式将 WKWebView
添加到 UIView
。
够简单吧?以上都在 Storyboard View 中,在自定义 UIViewController
class 中声明,并在 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,UIViewController
本身的 _view 变量为 nil。
我不明白为什么会这样。一切都非常简单且易于连接。我在 Objective-C 中从未 运行 遇到过此类问题。任何建议表示赞赏!
删除 loadView
实现。不要覆盖该方法,请始终使用 viewDidLoad
。
如果您覆盖 loadView
,则您负责创建控制器的视图并将其分配给 self.view
。
我正在开发一个 Swift 应用程序并且 运行 遇到了一个疯狂的奇怪问题。我有一个简单的故事板视图控制器设置,它有 3 UIButtons
一个 UIImageView
和一个 UIView
(作为主视图的子视图)。
我想以编程方式将 WKWebView
添加到 UIView
。
够简单吧?以上都在 Storyboard View 中,在自定义 UIViewController
class 中声明,并在 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,UIViewController
本身的 _view 变量为 nil。
我不明白为什么会这样。一切都非常简单且易于连接。我在 Objective-C 中从未 运行 遇到过此类问题。任何建议表示赞赏!
删除 loadView
实现。不要覆盖该方法,请始终使用 viewDidLoad
。
如果您覆盖 loadView
,则您负责创建控制器的视图并将其分配给 self.view
。