链接到多个网站

时间:2017-04-08 17:41:13

标签: swift url hyperlink

我想创建一个链接,但是在按下它时会随机选择列表中的链接。我已经将代码设置为按钮链接,但是如何修改它以便我在不同时间点击时随机选择添加更多网址。

当前链接代码:

@IBAction func Website(_ sender: Any) {

        if let url = NSURL(string: "http:heeeeeeeey.com/"){
            UIApplication.shared.openURL(url as URL)
        }
    }

2 个答案:

答案 0 :(得分:1)

尝试类似:

@IBAction func Website(_ sender: Any) {
   let websites = ["http://website1.com",
                   "http://website2.com",
                   "http://website3.com"]
   if let url = URL(string: websites[Int(arc4random_uniform(UInt32(websites.count)))]) {
      UIApplication.shared.openURL(url as URL)
   }
}

这应该适合你。

说明:

  • websites是一个String的数组,因此请将按钮从中选择的所有网址都放在那里。
  • Int(arc4random_uniform(UInt32(websites.count)))是在0websites.count之间选择一个随机数的神奇部分(这是数组中的最后一项。

如果您是Swift(或编程)的新手,这可能让您感到困惑,不要惊慌失措,只是继续练习。

祝你好运!

答案 1 :(得分:1)

首先,创建一个URL字符串数组非常简单:

var urls = [
  "http://www.url1.com",
  "http://www.url2.com",
  "http://www.url3.com"
]

现在,可以使用这一长行代码获取此urls数组的随机元素:

let randomURL = urls[Int(arc4random_uniform(UInt32(urls.count)))]

但是,另一种方法是添加适用于所有阵列的Array扩展名:

extension Array {
  public var random: Element? {
    let index = Int(arc4random_uniform(UInt32(self.count)))
    return self.count>0 ? self[index] : nil
  }
}

现在,获取urls数组的随机元素非常简单:

urls.random

这会返回Optional(这是因为如果数组中没有元素,则random属性将返回nil)。因此,在您的代码中,您还需要打开random属性的结果:

@IBAction func Website(_ sender: Any) {
  if let urlString = urls.random,
    let url = URL(string: urlString) {
    UIApplication.shared.openURL(url as URL)
  }
}

P.S。关于您的代码的几点评论:

  • 我建议您将Website重命名为openRandomWebsite(记住也要更改故事板连接)。方法应解释它们的作用,并以小写字母开头。如果您有兴趣,可以使用Swift通用代码约定here
  • iOS 10中已弃用openURL方法,因此建议您使用open(_:​options:​completion​Handler:​)方法。

您的代码如下:

UIApplication.shared.open(url, options: [:], completionHandler: { (success) in
      //URL opened
    })