Раскадровка / Свифт, все IBOutlets и _view равны нулю - PullRequest
0 голосов
/ 22 мая 2018

Я работаю над приложением Swift и столкнулся с сумасшедшей странной проблемой.У меня есть простая настройка контроллера представления раскадровки, он имеет 3 UIButtons a UIImageView и UIView (как подпредставление основного представления).

Я хочу программно добавить WKWebView вUIView.

Достаточно просто, верно?Все вышеперечисленное находится в 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 равны нулю.IBOutlets равны Nil, а переменная _view самого UIViewController равна нулю.

Я не понимаю, почему это происходит.Все довольно просто и легко связано.Я никогда не сталкивался с такой проблемой в Objective-C.Любой совет приветствуется!

enter image description here

enter image description here

1 Ответ

0 голосов
/ 22 мая 2018

Удалить loadView реализацию.Не переопределяйте этот метод, всегда используйте viewDidLoad.

Если вы переопределите loadView, то вы несете ответственность за создание представления контроллера и присвоение ему self.view.

...