首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在IOS的WkWebView中传递不同的URL?

如何在IOS的WkWebView中传递不同的URL?
EN

Stack Overflow用户
提问于 2020-09-02 18:35:46
回答 2查看 47关注 0票数 0

我想在同一个WkWebView控制器上调用“隐私策略”和“用户条款”网页链接。我在初始视图控制器中定义了两个不同的按钮,当按下这两个按钮中的任何一个时,我在变量中分配相关的URL字符串。然后通过perform segue将其传递给WkWebView控制器。请参阅下面的两个控制器。我的问题是,在第一次运行时,URL返回nil,因为当我按下按钮时,它会跳到WkWebView控制器并崩溃。如果我在初始化时分配一个默认链接,它会按预期工作。我不明白为什么它在第一次运行时不进行URL赋值。非常感谢任何帮助,因为我还找不到任何解决方案。(Apple links只是个例子)

分配URL并执行segues的初始控制器:

代码语言:javascript
复制
class InfoViewController: UIViewController {

var myURL: String?

@IBAction func helpButton(_ sender: UIButton) {
}


@IBAction func privacyPolicyButton(_ sender: UIButton) {
          
    
    myURL =  "https://www.apple.com/legal/intellectual-property/piracy.html"
    

    performSegue(withIdentifier: "GoToWebView", sender: self)

}

@IBAction func termsOfUseButtton(_ sender: UIButton) {
    
     myURL = "https://www.apple.com/legal/internet-services/terms/site.html"

     performSegue(withIdentifier: "GoToWebView", sender: self)
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
      super.prepare(for: segue, sender: sender)
             if segue.identifier == "GoToWebView" {
                 let destinationVC = segue.destination as! WebViewController

                destinationVC.url = myURL

             }
         }

我的第二个控制器(WkWebView)用于查看苹果文档中描述的网页链接:

代码语言:javascript
复制
class WebViewController: UIViewController, WKUIDelegate {

var webView: WKWebView!

var url: String?

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

    let myRequest = URLRequest(url: URL(string: url!)!)
    webView.load(myRequest)
}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-06 18:00:23

我终于发现了代码中的错误。我错误地控制将段从初始控制器上的操作按钮拖到第二个控制器上,这导致每当按下按钮时运行"prepare for segue“方法,而不处理下一行以分配IBaction函数下的URL。我修正了从控制器到控制器的分段,它工作得很好。

票数 0
EN

Stack Overflow用户

发布于 2020-09-02 19:08:22

在设置url之后,您应该重新加载webView

代码语言:javascript
复制
class WebViewController: UIViewController, WKUIDelegate {

    var url: String? {
        didSet(oldValue) {
            if self.isViewLoaded {
                let myRequest = URLRequest(url: URL(string: url!)!)
                webView.load(myRequest)
            }
        }
    }

    ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63703752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档