didFinish вызывается, но окончательный WKWebView пустой
Поскольку вы никогда ничего не делали, чтобы сделать его не пустым.Ваш код говорит:
var webviewToLoad:WKWebView!
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
webviewToLoad = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())
webviewToLoad.navigationDelegate = self
webviewToLoad.loadHTMLString(htmlString, baseURL: Bundle.main.resourceURL)
}
Так что все, что вы делаете, это примерно webviewToLoad
.Но webviewToLoad
- это , а не - это то же самое webView
, которое появляется в ViewController после перехода:
class ViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
}
То, что - это веб-представление, которое вы хотите предоставитьсодержание к.Вы вообще этого не делаете;Ни один из вашего кода не затрагивает webView
, чтобы придать ему содержание.
Я думаю, что суть вашего заблуждения здесь:
if segue.identifier == "postview"{
let destinationController = segue.destination as! ViewController
destinationController.webView = webviewToLoad
}
Вы не можете просто заменить один веб-просмотр другим и ожидать чего-томагически работать;loadView
все равно заставит исходное пустое веб-представление быть вашим видом и появиться в интерфейсе.
Вместо этого вам нужна эта архитектура:
if segue.identifier == "postview"{
let destinationController = segue.destination as! ViewController
// make `loadView` run
destinationController.loadViewIfNeeded()
let webView = destinationController.webView
// now load _this_ `webView` with content!
let htmlString = "some html content"
webView.loadHTMLString(htmlString, baseURL: Bundle.main.resourceURL)
}