Кнопка открытия кнопки "Создать" - Swift
Это код, который я сейчас получил, взятый из ответа на аналогичный вопрос.
@IBAction func GoogleButton(sender: AnyObject) {
if let url = NSURL(string: "www.google.com"){
UIApplication.sharedApplication().openURL(url)
}
}
Кнопка называется кнопкой Google, а ее текст - www.google.com.
Как мне открыть ссылку, когда я нажму?
Ответы
Ответ 1
Ваш код показывает действие, которое происходит после нажатия кнопки, а не фактическая кнопка. Вам необходимо подключить кнопку к этому действию.
(Я переименовал действие, потому что 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:
![enter image description here]()
Редактировать: в Swift 3 код для открытия ссылки в сафари изменился. Вместо этого используйте UIApplication.shared().openURL(URL(string: "http://www.stackoverflow.com")!)
.
Редактировать: в Swift 4
UIApplication.shared.openURL(URL(string: "http://www.stackoverflow.com")!)
Ответ 2
Строка, которую вы поставляете для NSURL
, не содержит информацию о протоколе. openURL
использует протокол для определения того, какое приложение открывает URL-адрес.
Добавление "http://" в вашу строку позволит iOS открыть Safari.
@IBAction func GoogleButton(sender: AnyObject) {
if let url = NSURL(string: "http://www.google.com"){
UIApplication.sharedApplication().openURL(url)
}
}
Ответ 3
поскольку метод openUrl устарел в iOS 10, вот решение для iOS 10
let settingsUrl = NSURL(string:UIApplicationOpenSettingsURLString) as! URL
UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)
Ответ 4
if let url = URL(string: "your URL") {
if #available(iOS 10, *){
UIApplication.shared.open(url)
}else{
UIApplication.shared.openURL(url)
}
}
Ответ 5
Для Swift 3.0:
if let url = URL(string: strURlToOpen) {
UIApplication.shared.openURL(url)
}
Ответ 6
если iOS 9 или выше, лучше использовать SafariServices, поэтому ваш пользователь не покинет ваше приложение.
import SafariServices
let svc = SFSafariViewController(url: url)
present(svc, animated: true, completion: nil)
Ответ 7
В Swift 4
if let url = URL(string: "http://yourURL") {
UIApplication.shared.open(url, options: [:])
}
Ответ 8
Код, который у вас есть, должен открыть ссылку просто отлично. Я считаю, что вы, вероятно, просто скопировали этот фрагмент кода в свой код. Проблема в том, что компонент интерфейса (кнопка) в интерфейсе (в раскадровке, скорее всего) не подключен к коду. Поэтому система не знает, что когда вы нажимаете кнопку, она должна вызывать этот код.
Чтобы объяснить этот факт системе, откройте файл раскадровки, где находится ваш Google Button
, затем в помощнике редактора откройте файл, где находится фрагмент кода func GoogleButton
. Щелкните правой кнопкой мыши на кнопке и перетащите строку в фрагмент кода.
Если вы создаете эту кнопку программно, вы должны добавить цель для какого-либо события, например UITouchUpInside. В Интернете много примеров, поэтому это не должно быть проблемой:)
ОБНОВЛЕНИЕ: Как уже отмечалось, вы также должны добавить протокол к ссылке ( "http://" или "https://" ). Он ничего не сделает.
Ответ 9
Для Swift3 код ниже работает нормально
@IBAction func Button(_ sender: Any) {
UIApplication.shared.open(urlStore1, options: [:], completionHandler: nil)
}
Ответ 10
Этот код работает с Xcode 11
if let url = URL(string: "http://www.google.com") {
UIApplication.shared.open(url, options: [:])
}