随机随机播放URL列表 - Swift

时间:2016-05-08 22:50:30

标签: swift youtube

我有一个非常基本/简单的swift应用程序,其中嵌入了WebView,可通过URL链接到Youtube视频。请参阅以下整个代码。我想添加10个其他Youtube URL并通过一个名为" shuffleButton"的按钮在WebView中随机填充它们。我可以非常简单地使用此按钮加载视频,然后随机随机播放。我可以在同一个ViewController中找到视频网址的主列表吗?谢谢!

// ViewController.swift

@IBOutlet var videoView: UIWebView!

@IBOutlet var shuffleButton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

let youtubeURL = "https://www.youtube.com/embed/Rg6GLVUnnpM"

    videoView.allowsInlineMediaPlayback = true

    videoView.loadHTMLString("<iframe width=\"\(videoView.frame.width)\" height=\"\(videoView.frame.height)\" src=\"\(youtubeURL)?&playsinline=1\" frameborder=\"0\" allowfullscreen></iframe>", baseURL: nil)

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

2 个答案:

答案 0 :(得分:1)

不确定这是否是一个非常有效的解决方案,但您可以创建基本查找并调用arc4random_uniform(_:)函数生成随机数:

struct VideoLinks {
    static func getLink(forNumber number: Int) -> String {
        switch number {
        case 1: return "http://www.example.com/one"
        case 2: return "http://www.example.com/two"
        case 3: return "http://www.example.com/three"
        case 4: return "http://www.example.com/four"
        case 5: return "http://www.example.com/five"
        case 6: return "http://www.example.com/six"
        case 7: return "http://www.example.com/seven"
        case 8: return "http://www.example.com/eight"
        case 9: return "http://www.example.com/nine"
        case 10: return "http://www.example.com/ten"
        default: return "http://www.example.com/one"
        }
    }
}

func shuffle() -> String {
    let linkNumber = Int(arc4random_uniform(11))
    return VideoLinks.getLink(forNumber: linkNumber)
}

或者如果你想要一个更简单的解决方案,只需创建一个链接数组并调用一个随机索引:

let videoLinks = [
    "http://www.example.com/1",
    "http://www.example.com/2",
    "http://www.example.com/3",
    "http://www.example.com/4",
    "http://www.example.com/5",
    "http://www.example.com/6",
    "http://www.example.com/7",
    "http://www.example.com/8",
    "http://www.example.com/9",
    "http://www.example.com/10"
]

func shuffle() -> String {
    let randomNumber = Int(arc4random_uniform(10))
    return videoLinks[randomNumber]
}

答案 1 :(得分:0)

  

我可以在同一个ViewController中找到视频网址的主列表吗?

当然!

因此,我们继续在视图控制器中包含该URL列表:

require(
[    "dojo/_base/declare",
     "dijit/_WidgetBase", 
     "dijit/_TemplatedMixin",
     "dijit/_WidgetsInTemplateMixin",
     "dijit/registry",
     "dijit/form/Button", 
     "dijit/form/DropDownButton",

(可以在视图控制器内的任何位置声明,例如直接在let urls = ["URL1", "URL2", "URL3", "URL4"] // etc. 上方。)

现在,我们需要一种方法来选择一个随机URL来打开。这样做的逻辑方法是生成随机数组索引。 This question讨论了在范围之间生成随机数,而this answer是编写Swift友好方式的好方法。 (如果您选择遵循扩展路线,则需要在任何类或其他对象之外的全局级别编写扩展名。)

因此,假设我们定义了上面答案链接中描述的viewDidLoad random扩展名,我们可以得到一个类似的随机索引:

Int

因此我们可以在视图控制器中添加一个IBAction,当按下按钮时会触发它。

let randomI = Int.random(0..<urls.count)

注意:如果您的网址数量较少,可能会导致连续加载相同的网址。