You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在UISearchBar中显示WebView当前页面的URL

解决WebView URL无法显示在UISearchBar的问题

问题核心是类型不匹配:myWebView.url是可选的URL对象,而UISearchBar.text需要String?类型,直接赋值会因类型兼容问题失效。结合WebView的生命周期回调,正确实现方式如下:

针对WKWebView(推荐使用)

  1. 给WebView设置导航代理:
myWebView.navigationDelegate = self
  1. 实现WKNavigationDelegate的加载完成回调,安全解包URL并转为字符串后赋值给搜索栏:
extension YourViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        if let currentURLString = webView.url?.absoluteString {
            // 确保在主线程更新UI(部分场景下代理方法可能在后台线程执行)
            DispatchQueue.main.async {
                self.mySearchBar.text = currentURLString
            }
        }
    }
}

针对UIWebView(已废弃,不推荐)

  1. 设置WebView的代理:
myWebView.delegate = self
  1. 实现UIWebViewDelegate的加载完成回调:
extension YourViewController: UIWebViewDelegate {
    func webViewDidFinishLoad(_ webView: UIWebView) {
        if let currentURLString = webView.request?.url?.absoluteString {
            DispatchQueue.main.async {
                self.mySearchBar.text = currentURLString
            }
        }
    }
}

额外检查点

  • 确认mySearchBar的IBOutlet已正确连接,无nil引用问题;
  • 若需在页面跳转过程中实时更新URL,可使用webView(_:didStartProvisionalNavigation:)(WKWebView)或webView(_:shouldStartLoadWith:navigationType:)(UIWebView)方法触发更新。

内容的提问来源于stack exchange,提问作者Sheft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:35:20