2016-05-08 73 views
0

我有一个非常基本的/简单的swift应用程序,嵌入WebView通过URL链接到Youtube视频。请参阅下面的完整代码。我想添加10个其他Youtube URL,并通过一个名为“shuffleButton”的按钮在WebView中随机填充它们。我怎么能够非常简单地使用这个按钮来加载视频,然后随机随机播放它们。我可以在同一个ViewController中找到视频URL的主列表吗?谢谢!随机随机清单的URL - 斯威夫特

// 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. 
} 

回答

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] 
} 
0

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

当然!

所以让我们继续前进,包括在我们的视图控制器的URL该列表:

let urls = ["URL1", "URL2", "URL3", "URL4"] // etc. 

(这可能被宣布为您的视图控制器内的任何地方,如直接在上面viewDidLoad

现在,我们需要一种方法来选择一个随机的URL来打开。这样做的逻辑方法就是生成一个随机数组索引。 This question讨论了在范围之间生成随机数字,this answer是编写Swift友好方式的好方法。 (如果你选择跟随延伸路线,比扩展将需要在全球层面上写的,任何一类或其他对象之外。)

因此,假如我们定义在上面的答案链接描述的randomInt扩展,我们可以得到一个随机指数,像这样:

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

因此,我们可以一个IBAction为增加按下按钮时会触发您的视图控制器。

@IBAction func shuffleURL() { 
    let randomI = Int.random(0..<urls.count) 
    videoView.loadHTMLString(urls[randomI], baseURL: nil) 
} 

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