Swift:如何将当前URL从UIWebView放入UITextField?

时间:2015-05-25 17:23:20

标签: swift url uiwebview uitextfield

(XCode 6.3.2,Swift 1.2)我只是想将UIWebView的加载网页的URL放入UITextField中。我找到的解决方案here对我不起作用。

这是我的代码:

@IBOutlet weak var addressBar: UITextField!
@IBOutlet weak var webView: UIWebView!

//some more code...

func webViewDidFinishLoad(webView : UIWebView) {
   self.addressBar.text = (self.webView.request?.URL.absoluteString)!
}

Swift编译器错误:可选类型'NSURL?'的值没有打开;你的意思是用'!'或'?'?

任何想法或提示都将非常感激。 感谢。

修改
Airspeed Velocity 的答案对我有用(参见下面的工作代码)。但是我发现有时加载的URL没有正确写回UITextField 例如,它可以在Vimeo上重现。 当我点击vimeo.com上的视频链接时,网址应更改为:https://vimeo.com/105060039
在移动Safari上,这可以正常工作但不在UIWebView上。对于网址“https://vimeo.com/”,不会添加视频编号 我做错了什么?是否有其他可能获得当前的URL?

@IBOutlet weak var addressBar: UITextField!
@IBOutlet weak var webView: UIWebView!

//some more code...

func webViewDidFinishLoad(webView: UIWebView) {
   addressBar.text = webView.request?.URL?.absoluteString
}

2 个答案:

答案 0 :(得分:2)

URL是可选的,因此您使用的是可选链接。您只需对请求的self.addressBar.text = self.webView.request?.URL?.absoluteString 执行相同操作,这也是可选的:

!

注意,没有必要用最后的self.addressBar.text强制解包。这是因为String?本身属于{{1}}类型。

答案 1 :(得分:0)

Swift 3.2

self.addressBar.text = self.webView.request?.url?.absoluteString