将URL从文本字段传递到第二个控制器中的Web视图

时间:2019-06-13 03:32:14

标签: ios swift

我正在尝试构建一个非常基本的浏览器,供公司内部使用。这是我用Swift编写的第一篇真正的代码,对初学者来说非常重要,并且依赖于教程。我已经成功地将文本显示在第二个控制器上,现在想用它来加载Web视图。

the setup

class ViewController: UIViewController {

@IBOutlet weak var urlField: UITextField!
@IBAction func launch(_ sender: Any) {
    if urlField.text != "" {
        performSegue(withIdentifier: "launch", sender: self)
    }
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let secondController = segue.destination as! BrowserController
    secondController.urlString = urlField.text!
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
}

}

这是我迷路的地方-如何将urlString转换为Web视图可以加载的内容?

到目前为止,我在第二个控制器中所拥有的只是

import UIKit
import WebKit

class BrowserController: UIViewController {

    @IBOutlet weak var label: UILabel!

    var urlString = String()

    override func viewDidLoad() {
        super.viewDidLoad()

        label.text = urlString

        // Do any additional setup after loading the view.
    }
}

任何帮助都将不胜感激!

4 个答案:

答案 0 :(得分:1)

将第二个视图控制器替换为以下内容

 import UIKit
    import WebKit

    class BrowserController: UIViewController, WKNavigationDelegate {

        @IBOutlet weak var label: UILabel!
        var urlString = String()
        var webView : WKWebView!

        override func viewDidLoad() {
            super.viewDidLoad()

            label.text = urlString

            // Do any additional setup after loading the view.
            //Load the webview
            loadPage();
        }

        func loadPage(){
           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)
        }

        //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")
       }
}

答案 1 :(得分:1)

import UIKit

class ViewController: UIViewController, UIWebViewDelegate {

    @IBOutlet weak var webView: UIWebView!
    var urlString = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        webView.delegate = self
        if let url = URL(string: urlString!) {
            let request = URLRequest(url: url)
            webView.loadRequest(request)
        }
    }
}

答案 2 :(得分:0)

如果您想在BrowserController中打开网站,则在从ViewController的文本字段获取网址后,请在BrowserController中使用此代码

import UIKit
import SafariServices

class BrowserController: UIViewController {
//@IBOutlet weak var label: UILabel!

var urlString = String()

override func viewDidLoad() {
    super.viewDidLoad()

    label.text = urlString

    guard let url = URL(string: urlString ?? "") else { return }
    let svc = SFSafariViewController(url: url)
    present(svc, animated: false, completion: nil)
}
}

这是从应用程序中打开浏览器的最简单方法。

答案 3 :(得分:0)

如果您正在考虑列出可以单击该网站的表格列表,请查看我编写的本教程。

https://daddycoding.com/2017/10/17/ios-tutorials-triggering-tableviewcell-visit-site/