我只是想弄明白,当你按下按钮时,你会显示用户的音乐库,然后你可以选择一首歌。我发现这样做的方法是通过MPMediaPickerController
,但我一直在努力让它发挥作用。这是我的程序到目前为止的样子:
import MediaPlayer
import UIKit
class ViewController: UIViewController, MPMediaPickerControllerDelegate {
var mediaPicker: MPMediaPickerController?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func showSongs(_ sender: Any) {
displayMediaPicker()
}
func displayMediaPicker() {
mediaPicker = MPMediaPickerController(mediaTypes: .music)
if let picker = mediaPicker {
picker.delegate = self
picker.allowsPickingMultipleItems = false
picker.showsCloudItems = false
picker.prompt = "Please Pick a Song"
view.addSubview(picker.view)
}
}
}
我知道在[self presentViewController:picker animated: true completion:nil]
之后应该有一个属性view.addSubview(picker.view)
,但是当我输入它时我有选项presentingViewController
和presentedViewContoller
,但没有presentViewController
任何帮助将非常感激
功能presentViewController: animated: completion:
函数在Swift 3中重命名,所以它现在看起来像这样:
present(viewControllerToPresent: UIViewController, animated: Bool, completion: (() -> Void)?)
所以,在你的情况下,你最终得到一个像这样的presentPicker
函数(注意最后一行):
func presentPicker() {
mediaPicker = MPMediaPickerController(mediaTypes: .music)
if let picker = mediaPicker {
picker.delegate = self
picker.allowsPickingMultipleItems = false
picker.showsCloudItems = false
picker.prompt = "Please Pick a Song"
present(picker, animated: false, completion: nil)
}
}
希望对你有所帮助。
Swift 5,Swift 4非常简单的解决方案
//MARK:- add it in your info.plist file
<key>NSAppleMusicUsageDescription</key>
<string>$(app Name) uses music</string>
//MARK:- Import in your file
import MediaPlayer
//MARK:- Import as your Delegates
MPMediaPickerControllerDelegate
//MARK:- Just call this function
func openAudio()
{
let audiopicker = MPMediaPickerController(mediaTypes: .anyAudio)
audiopicker.prompt = "Audio"
audiopicker.delegate = self
audiopicker.allowsPickingMultipleItems = false
self.present(audiopicker, animated: true, completion: nil)
}