在iOS中使用WkWebView和Swift时,网页无法显示

4
我正在使用iOS9和XCode7.2,使用WkWebView和Swift让我的应用程序显示一个网页。
为了消除可能的错误,我创建了一个XCode项目,只包含以下代码,Main.storyboard中没有任何内容。
奇怪的是,这个网页在过去几天里我一遍又一遍地运行代码之后,只出现了"1次"。两位StackOverflow成员确认该代码适用于XCode 8 / Swift 3和Xcode 7.3.1 / iOS 9.3模拟器。
我的xCode太旧了吗?还有什么其他问题可能会导致这种情况发生?
import UIKit
import WebKit

class WebViewController: UIViewController {
    @IBOutlet var containerView : UIView!
    var webView: WKWebView?

    override func loadView() {
        super.loadView()
        self.webView = WKWebView()
        self.view = self.webView!
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        let url = NSURL(string: "https://www.yahoo.com")!
        let req = NSURLRequest(URL: url)
        self.webView!.loadRequest(req)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

@BJHStudios,是的 - LED Fantom
@BJHStudios,我没有在任何地方使用IBOutlet。但是奇怪的是,即使没有使用IBOutlet,网页也会出现一次。因此,我认为我不需要它。 - LED Fantom
1
只是想确保你的Storyboard中没有意外覆盖视图的东西。这不是我实现的方式,但我已经在XCode 8 / Swift 3中运行了你的代码,没有问题。 - JAB
@BJHStudios,您会如何实现网页? - LED Fantom
1
我可能会选择使用容器视图或将其添加为子视图,但是像往常一样,通往罗马的道路有很多。 - JAB
显示剩余7条评论
2个回答

0

步骤 : 1 在 ViewController.swift 中导入 WebKit

import WebKit

步骤:2 声明 webView 变量。

var webView : WKWebView!

步骤:3 添加 WKNavigationDelegate 的代理

class ViewController: UIViewController , WKNavigationDelegate{

步骤:4 在 ViewDidLoad 中添加代码。

let myBlog = "https://www.google.com/"
let url = NSURL(string: myBlog)
let request = NSURLRequest(URL: url!)

// init and load request in webview.

webView = WKWebView(frame: self.view.frame)
webView.navigationDelegate = self
webView.loadRequest(request)
self.view.addSubview(webView)
self.view.sendSubviewToBack(webView)

0

使用自动布局适配所有设备的正确方法:

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate {

let webView = WKWebView()

override func viewDidLoad() {
    super.viewDidLoad()
    setupWebView()
}

fileprivate func setupWebView() {
    webView.uiDelegate = self
    webView.translatesAutoresizingMaskIntoConstraints = false
    DispatchQueue.main.async {
        guard let url = URL(string: "http://www.apple.com") else { return }
        self.webView.load(URLRequest(url: url))
    }
    view.addSubview(webView)
    webView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
    webView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
    webView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
    webView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
}}

in info.plist:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接