如何在Swift中的UIWebView中加载URL?

时间:2014-08-31 23:11:27

标签: swift ios8

我有以下代码:

UIWebView.loadRequest(NSURLRequest(URL: NSURL(string: "google.ca")))

我收到以下错误:

  

'NSURLRequest'无法转换为UIWebView。

知道问题是什么吗?

19 个答案:

答案 0 :(得分:58)

loadRequest:是一个实例方法,而不是类方法。您应该尝试使用UIWebview实例作为接收者来调用此方法,而不是类本身。

webviewInstance.loadRequest(NSURLRequest(URL: NSURL(string: "google.ca")!))

但是,正如@radex在下面正确指出的那样,你也可以利用currying来调用这个函数:

UIWebView.loadRequest(webviewInstance)(NSURLRequest(URL: NSURL(string: "google.ca")!))   

答案 1 :(得分:31)

Swift中的UIWebView

@IBOutlet weak var webView: UIWebView!

override func viewDidLoad() {
    super.viewDidLoad()
        let url = URL (string: "url here")
        let requestObj = URLRequest(url: url!)
        webView.loadRequest(requestObj)
    // Do any additional setup after loading the view.
}

答案 2 :(得分:28)

试试这个:

  1. 将UIWebView添加到View。

  2. 使用助理编辑器连接UIWebview插座并命名您的" webview"。

  3. UIWebView加载网址。

    @IBOutlet weak var webView: UIWebView!
    
    override func viewDidLoad() {
       super.viewDidLoad()
        // Your webView code goes here
       let url = URL(string: "https://www.google.co.in")
       let requestObj = URLRequest(url: url! as URL)
       webView.load(requestObj)
    }
    
  4. 然后运行应用!!

答案 3 :(得分:10)

Swift 3在URL和URLRequest上不再使用NS前缀,因此更新的代码将是:

let url = URL(string: "your_url_here")
yourWebView.loadRequest(URLRequest(url: url!))

答案 4 :(得分:7)

在Swift 3中你可以这样做:

@IBOutlet weak var webview: UIWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Web view load
    let url = URL (string: "http://www.example.com/")
    let request = URLRequest(url: url!)
    webview.loadRequest(request)
}

请务必在Info.plist添加权限,添加以下值:

Info.plist

答案 5 :(得分:5)

Swift 3

@IBOutlet weak var webview: UIWebView!
webview.loadRequest(URLRequest(url: URL(string: "https://www.yourvideo.com")!))

答案 6 :(得分:5)

Swift 3 - Xcode 8.1

 @IBOutlet weak var myWebView: UIWebView!

    override func viewDidLoad() {
            super.viewDidLoad()

            let url = URL (string: "https://ir.linkedin.com/in/razipour1993")
            let requestObj = URLRequest(url: url!)
            myWebView.loadRequest(requestObj)

        }

答案 7 :(得分:4)

UIWebView loadRequest:使用NSURL对象创建NSURLRequest,然后将请求传递给uiwebview,它会将请求的URL加载到Web视图中。

 override func viewDidLoad() {
     super.viewDidLoad()
     // Do any additional setup after loading the view, typically from a nib.
     let url = NSURL (string: "http://www.google.com");
     let requestObj = NSURLRequest(URL: url!);
     myWebView.loadRequest(requestObj);
     self.view.addSubview(myWebView)
  }

有关详情:

http://sourcefreeze.com/uiwebview-example-using-swift-in-ios/

答案 8 :(得分:3)

将URL加载到WebView非常简单。只需在故事板中创建一个WebView,然后就可以使用以下代码加载URL。

    let url = NSURL (string: "https://www.simplifiedios.net");
    let request = NSURLRequest(URL: url!);
    webView.loadRequest(request);

简单到只有3行代码:)

参考:UIWebView Example

答案 9 :(得分:3)

使用Swift语言的Webview

let url = URL(string: "http://example.com")
   webview.loadRequest(URLRequest(url: url!))

答案 10 :(得分:2)

对于Swift 3.1及以上版本

let url = NSURL (string: "Your Url")
let requestObj = NSURLRequest(url: url as! URL);
YourWebViewName.loadRequest(requestObj as URLRequest)

答案 11 :(得分:2)

简单,经过测试并100%正常工作

导入webkit:

import WebKit

将IBOutlet分配给webview:

var webView : WKWebView!

设置委托:

class ViewController: UIViewController , WKNavigationDelegate{

在viewDidLoad()上编写代码:

// loading URL :
let myBlog = "https://stackoverflow.com/users/4600136/mr-javed-multani?tab=profile"
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)

编写委托方法:

//MARK:- WKNavigationDelegate

func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
print(error.localizedDescription)
}


 func webView(webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
print("Strat to load")
    }

 func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
print("finish to load")
}

看起来像: enter image description here

答案 12 :(得分:2)

快速4.2

@IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
       super.viewDidLoad()
           //Func Gose Here 
          let url = URL(string: link)
          let requestObj = URLRequest(url: url! as URL)
           webView.loadRequest(requestObj)

       }

答案 13 :(得分:1)

Swift 4更新以编程方式创建WebView。

import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {

var webView: WKWebView!

override func loadView() {
    let webConfiguration = WKWebViewConfiguration()
    webView = WKWebView(frame: .zero, configuration: webConfiguration)
    webView.uiDelegate = self
    view = webView
}
override func viewDidLoad() {
    super.viewDidLoad()

    let myURL = URL(string: "https://www.apple.com")
    let myRequest = URLRequest(url: myURL!)
    webView.loadRequest(myRequest)
}}

答案 14 :(得分:1)

在Swift 4或4.2中,您可以像这样使用

  1. 添加WKWebView并连接到您的视图控制器。
  2. 您的视图就像下面这样:

    const products = [{
        "id": "5c94aa7b7a37631ce2a97a72",
        "material": "5c9485d37804946bc487ce59",
      },
      {
        "id": "5c94aa7b7a37631ce2a97a72",
        "material": "5c94862a7804946bc487ce5e",
      },
      {
        "id": "5c94aa7b7a37631ce2a97a72",
        "material": "5c9486397804946bc487ce61",
      },
      {
        "id": "5c94a0a87a37631ce2a979de",
        "material": "5c9485d37804946bc487ce59",
      },
      {
        "id": "5c94a0a87a37631ce2a979de",
        "material": "5c94862a7804946bc487ce5e",
      },
      {
        "id": "5c94a0a87a37631ce2a979de",
        "material": "5c9486397804946bc487ce61",
      }
    ];
    console.log(products.length);
    const id = "5c94aa7b7a37631ce2a97a72";
    const material = "5c9485d37804946bc487ce59";
    const filtered = products.filter(x => x.id !== id || x.material !== material);
    console.log(filtered.length);
    console.log(filtered);
  3. 允许任意加载真实的info.plist

     import UIKit
     import WebKit
    
    class ViewController: UIViewController {
    
       @IBOutlet weak var wkwebview: WKWebView!
    
        override func viewDidLoad() {
           super.viewDidLoad()
    
          let request = URLRequest(url: URL(string: "**your URL**")!)        
          wkwebview?.load(request)
    
      }
    
    }
    

    注释信息。plist看起来像下面的

enter image description here

答案 15 :(得分:0)

import UIKit

class ViewController: UIViewController{

@IBOutlet weak var webView: UIWebView!



override func viewDidLoad() {
   super.viewDidLoad()
       //Func Gose Here 
      loadUrl()

   } 
 func loadUrl(){

   let url = URL(string: "Url which you want to load(www.google.com)")
   let requestObj = URLRequest(url: url! as URL)
   webView.load(requestObj)
 }

}

答案 16 :(得分:0)

您可以加载这样的页面:

let url: URL = URL(string:"https://google.com")!
webView.loadRequest(URLRequest.init(url: url))

或单行方法:

webView.loadRequest(URLRequest.init(url: URL(string: "https://google.com")!))

webView是您的出口变量。

答案 17 :(得分:0)

<块引用>

在 swift 5

import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
   var webView: WKWebView!
   override func viewDidLoad() {
      super.viewDidLoad()
      let myURL = URL(string:"https://www.apple.com")
      let myRequest = URLRequest(url: myURL!)
      webView.load(myRequest)
   }
   override func loadView() {
      let webConfiguration = WKWebViewConfiguration()
      webView = WKWebView(frame: .zero, configuration: webConfiguration)
      webView.uiDelegate = self
      view = webView
   }
}

答案 18 :(得分:-1)

  

试试这个

let url = NSURL (string: "http://www.apple.com");
myWebView.loadRequest(NSURLRequest(URL: url!));