[英]Picking a song and play from Music app library - Swift 2.0
我剛剛參加了基本的Swift 2.0
課程。 我正在嘗試制作一個應用程序,以便從iOS的音樂應用程序庫中選擇一首歌曲並播放。 我碰到了這個鏈接 ,該鏈接顯示了如何制作媒體項目選擇器。
import UIKit
import MediaPlayer
class ViewController: UIViewController {
@IBOutlet weak var pickSong: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let mediaPicker = MPMediaPickerController(mediaTypes: .Music)
// mediaPicker.delegate = self
// mediaPicker.prompt = "Select song (Icloud songs must be downloaded to use)"
mediaPicker.allowsPickingMultipleItems = false
mediaPicker.showsCloudItems = false
presentViewController(mediaPicker, animated: true, completion: {})
}
mediaPicker.delegate = self
顯示
無法將類型“ ViewController”的值分配給類型“ MPMediaPickerControllerDelegate?”
錯誤信息。 當我阻止它時,該應用程序可以運行,並且可以讓我完美地瀏覽歌曲。
問題1:我想知道此行的用途是什么?
問題2:如何播放使用此代碼挑選的歌曲?
我在這里和其他網站上搜索了如何播放歌曲。 我發現人們正在使用player.play()
播放音樂。 我嘗試過但失敗了。
ViewController需要符合“ MPMediaPickerControllerDelegate”:
//Let other classes know ViewController is a MPMediaPickerControllerDelegate
class ViewController: UIViewController, MPMediaPickerControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let mediaPicker = MPMediaPickerController(mediaTypes: .Music)
mediaPicker.delegate = self
presentViewController(mediaPicker, animated: true, completion: {})
}
添加以下方法以符合MPMediaPickerControllerDelegate:
func mediaPicker(mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) {
//User selected a/an item(s).
for mpMediaItem in mediaItemCollection.items {
print("Add \(mpMediaItem) to a playlist, prep the player, etc.")
}
}
func mediaPickerDidCancel(mediaPicker: MPMediaPickerController) {
print("User selected Cancel tell me what to do")
}
的目的
'mediaPicker.delegate = self'
是設置ViewController來響應上面添加的功能。 如果不設置委托,mediaPicker仍然會出現,但是ViewController不會知道用戶已執行操作。
每當您設置委托時,請確保該類符合委托方法。 如果您不知道這些方法,請在Apple的Developer文檔中搜索該委托(即搜索“ MPMediaPickerControllerDelegate”),然后會看到可以添加的所有委托方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.