I am trying to follow a recent post on using a MPMediaPickerControllerDelegate
to present a music selection list.
The tutorial is found at this URL:
http://www.justindoan.com/tutorials/
I am using this code:
import UIKit
import MediaPlayer
class ViewController: UIViewController, MPMediaPickerControllerDelegate {
var mediapicker1: MPMediaPickerController!
override func viewDidLoad() {
super.viewDidLoad()
let mediaPicker: MPMediaPickerController = MPMediaPickerController.self(mediaTypes:MPMediaType.music)
mediaPicker.allowsPickingMultipleItems = false
mediapicker1 = mediaPicker
mediaPicker.delegate = self
self.presentViewController(mediapicker1, animated: true, completion: nil)
}
}
However I have found that the:
self.presentViewController(mediapicker1, animated: true, completion: nil)
does not work. Unfortunately, Swift 3's suggested automatic solution does not work either:
self.present(mediapicker1, animated: true, completion: nil)
Furthermore, the iOS 10 Beta Release Notes, found at:
https://www.scribd.com/doc/315770725/IOS-10-Beta-Release-Notes
says on page 10 of 18,
An MPMediaPickerController object may not display as expected.
I have spent a great deal of time looking to solve this issue on my own with no success.
Any suggestions?
Go through the steps:
As per our discussion over comments, I recently use the MPMediaPickerController
in my latest app named playmates. I am sharing the working code with you. I have written the self-explanatory code.
import MediaPlayer
class viewControllerName: UIViewController,MPMediaPickerControllerDelegate {
//Below is Inaction for picking music from media library
@IBAction func btnMediaPickerAction(_ sender: UIButton) {
let mediaPicker: MPMediaPickerController = MPMediaPickerController.self(mediaTypes:MPMediaType.music)
mediaPicker.delegate = self
mediaPicker.allowsPickingMultipleItems = false
self.present(mediaPicker, animated: true, completion: nil)
}
// MPMediaPickerController Delegate methods
func mediaPickerDidCancel(_ mediaPicker: MPMediaPickerController) {
self.dismiss(animated: true, completion: nil)
}
func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) {
self.dismiss(animated: true, completion: nil)
print("you picked: \(mediaItemCollection)")//This is the picked media item.
// If you allow picking multiple media, then mediaItemCollection.items will return array of picked media items(MPMediaItem)
}
}
I found below discripencies in your code:
self.present
not self.presentViewController
mediaPicker
. As in the delegate method you are getting the instance of MPMediaPickerController
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With