我有一个非常基本/简单的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.
}
答案 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)
注意:如果您的网址数量较少,可能会导致连续加载相同的网址。