这是我现在的代码,取自类似问题的答案。
@IBAction func GoogleButton(sender: AnyObject) {
if let url = NSURL(string: "www.google.com"){
UIApplication.sharedApplication().openURL(url)
}
}
该按钮名为Google按钮,其文字为www.google.com
按下它时如何打开链接?
答案 0 :(得分:73)
您的代码显示的是点击按钮时出现的操作,而不是实际按钮。您需要将按钮与操作连接起来。
(我已重命名该操作,因为GoogleButton
不是某个操作的好名称)
在代码中:
override func viewDidLoad() {
super.viewDidLoad()
googleButton.addTarget(self, action: "didTapGoogle", forControlEvents: .TouchUpInside)
}
@IBAction func didTapGoogle(sender: AnyObject) {
UIApplication.sharedApplication().openURL(NSURL(string: "http://www.google.com")!)
}
在IB:
编辑:在Swift 3中,在safari中打开链接的代码已更改。请改用UIApplication.shared().openURL(URL(string: "http://www.stackoverflow.com")!)
。
编辑:在Swift 4中
UIApplication.shared.openURL(URL(string: "http://www.stackoverflow.com")!)
答案 1 :(得分:21)
您为NSURL
提供的字符串不包含协议信息。 openURL
使用协议来决定打开网址的应用。
添加" http://"你的字符串将允许iOS打开Safari。
@IBAction func GoogleButton(sender: AnyObject) {
if let url = NSURL(string: "http://www.google.com"){
UIApplication.sharedApplication().openURL(url)
}
}
答案 2 :(得分:10)
因为在iOS 10中不推荐使用openUrl方法,这里是适用于iOS 10的解决方案
let settingsUrl = NSURL(string:UIApplicationOpenSettingsURLString) as! URL
UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)
答案 3 :(得分:8)
if let url = URL(string: "your URL") {
if #available(iOS 10, *){
UIApplication.shared.open(url)
}else{
UIApplication.shared.openURL(url)
}
}
答案 4 :(得分:7)
对于Swift 3.0:
if let url = URL(string: strURlToOpen) {
UIApplication.shared.openURL(url)
}
答案 5 :(得分:7)
如果使用iOS 9或更高版本,最好使用SafariServices,这样您的用户就不会离开您的应用。
import SafariServices
let svc = SFSafariViewController(url: url)
present(svc, animated: true, completion: nil)
答案 6 :(得分:5)
在Swift 4中
if let url = URL(string: "http://yourURL") {
UIApplication.shared.open(url, options: [:])
}
答案 7 :(得分:4)
您拥有的代码应该可以正常打开链接。我相信,您可能只是将此代码片段复制粘贴到您的代码中。问题是界面中的UI组件(按钮)(很可能是故事板中)没有连接到代码。所以系统不知道,当你按下按钮时,它应该调用这段代码。
为了向系统解释这一事实,请打开您Google Button
所在的故事板文件,然后在助理编辑器中打开您的func GoogleButton
代码片段所在的文件。右键单击该按钮,然后将该行拖动到代码片段。
如果以编程方式创建此按钮,则应为某些事件添加目标,例如UITouchUpInside。网上有很多例子,所以它应该不是问题:)
更新:正如其他人所说,您还应该为链接添加协议(“http://”或“https://”)。否则它什么都不做。
答案 8 :(得分:2)
对于Swift3,下面的代码工作正常
@IBAction func Button(_ sender: Any) {
UIApplication.shared.open(urlStore1, options: [:], completionHandler: nil)
}
答案 9 :(得分:0)
此代码可用于Xcode 11
if let url = URL(string: "http://www.google.com") {
UIApplication.shared.open(url, options: [:])
}
答案 10 :(得分:0)
// How to open a URL in Safari import SafariServices \\ import @IBAction func google(_ sender: Any) { if let url = URL(string: "https://www.google.com") { let safariVC = SFSafariViewController(url: url) present(safariVC, animated: true, completion: nil) } }