C'est le code que j'ai maintenant, tiré d'une réponse à une question similaire.
@IBAction func GoogleButton(sender: AnyObject) {
if let url = NSURL(string: "www.google.com"){
UIApplication.sharedApplication().openURL(url)
}
}
Le bouton s'appelle Google Button et son texte est www.google.com.
Comment est-ce que je le fais ouvrir le lien quand j'appuie dessus?
Votre code indique l’action qui se produirait une fois le bouton enfoncé, plutôt que le bouton réel . Vous devez connecter votre bouton à cette action .
(J'ai renommé l'action car GoogleButton
n'est pas un bon nom pour une action)
Dans du code:
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")!)
}
En IB:
Edit: in Swift 3, le code permettant d'ouvrir un lien dans safari a été modifié. Utilisez plutôt UIApplication.shared().openURL(URL(string: "http://www.stackoverflow.com")!)
).
Edit: in Swift 4 UIApplication.shared.openURL(URL(string: "http://www.stackoverflow.com")!)
La chaîne que vous fournissez pour le NSURL
n'inclut pas les informations de protocole. openURL
utilise le protocole pour décider quelle application ouvrir l'URL.
Ajouter "http: //" à votre chaîne permettra à iOS d'ouvrir Safari.
@IBAction func GoogleButton(sender: AnyObject) {
if let url = NSURL(string: "http://www.google.com"){
UIApplication.sharedApplication().openURL(url)
}
}
comme la méthode openUrl est obsolète dans iOS 10, voici la solution pour iOS 10
let settingsUrl = NSURL(string:UIApplicationOpenSettingsURLString) as! URL
UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)
if let url = URL(string: "your URL") {
if #available(iOS 10, *){
UIApplication.shared.open(url)
}else{
UIApplication.shared.openURL(url)
}
}
Pour Swift 3.0:
if let url = URL(string: strURlToOpen) {
UIApplication.shared.openURL(url)
}
si iOS 9 ou supérieur, il est préférable d'utiliser SafariServices, afin que votre utilisateur ne quitte pas votre application.
import SafariServices
let svc = SFSafariViewController(url: url)
present(svc, animated: true, completion: nil)
Dans Swift 4
if let url = URL(string: "http://yourURL") {
UIApplication.shared.open(url, options: [:])
}
Le code que vous avez devrait ouvrir le lien très bien. Je crois que vous avez probablement simplement copié-collé ce fragment de code dans votre code. Le problème est que le composant d'interface utilisateur (bouton) de l'interface (dans le storyboard, très probablement) n'est pas connecté au code. Le système ne sait donc pas que lorsque vous appuyez sur le bouton, il doit appeler ce code.
Pour expliquer ce fait au système, ouvrez le fichier de scénario, où votre Google Button
se trouve, puis dans l’éditeur adjoint, ouvrez le fichier où se trouve votre func GoogleButton
Le fragment de code est localisé. Cliquez avec le bouton droit sur le bouton et faites glisser la ligne vers le fragment de code.
Si vous créez ce bouton par programme, vous devez ajouter une cible à un événement, par exemple UITouchUpInside. Il y a beaucoup d'exemples sur le Web, donc ça ne devrait pas être un problème :)
PDATE: Comme d'autres l'ont déjà noté, vous devez également ajouter un protocole au lien ("http: //" ou "https: //"). Il ne fera rien sinon.
Pour Swift3, le code ci-dessous fonctionne correctement
@IBAction func Button(_ sender: Any) {
UIApplication.shared.open(urlStore1, options: [:], completionHandler: nil)
}
Ce code fonctionne avec Xcode 11
if let url = URL(string: "http://www.google.com") {
UIApplication.shared.open(url, options: [:])
}