如何使用Swift 3 iOS10为MPMediaPickerControllerDelegate呈现带有视图控制器的音乐库?

Geo*_*Lee 6 mpmediapickercontroller ios presentviewcontroller swift swift3

我正在尝试关注最近使用a MPMediaPickerControllerDelegate来呈现音乐选择列表的帖子.

该教程位于以下URL:

http://www.justindoan.com/tutorials/

我正在使用此代码:

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)
        }
}
Run Code Online (Sandbox Code Playgroud)

但是我发现了:

self.presentViewController(mediapicker1, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

不起作用.不幸的是,Swift 3建议的自动解决方案也不起作用:

self.present(mediapicker1, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

此外,iOS 10 Beta发行说明,发现于:

https://www.scribd.com/doc/315770725/IOS-10-Beta-Release-Notes

在第10页,共18页,

MPMediaPickerController对象可能无法按预期显示.

我花了很多时间自己解决这个问题而没有成功.

有什么建议?

季亨达*_*季亨达 20

完成以下步骤:

  1. 将"NSAppleMusicUsageDescription"添加到您的Info.plist中以获取隐私权限.
  2. 确保您的iPhone上有音乐应用.它不适用于模拟器.

  • @JAL在新的iOS10中,它会出现一个空白视图.经过iPhone6 Plus,iOS10测试. (3认同)

pkc*_*456 5

根据我们对评论的讨论,我最近使用了MPMediaPickerController我最新的名为playmates的应用程序.我正在和你分享工作代码.我写了不言自明的代码.

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)
            }
}
Run Code Online (Sandbox Code Playgroud)

我在下面找到了代码中的缺陷:

  • 使用self.presentself.presentViewController
  • 无需创建全局实例mediaPicker.在委托方法中,您将获得实例MPMediaPickerController