繁体   English   中英

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

[英]How Do I Present a Music Library With a View Controller for a MPMediaPickerControllerDelegate using Swift 3 iOS10?

我正在尝试关注使用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)
        }
}

但是我发现了:

self.presentViewController(mediapicker1, animated: true, completion: nil)

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

self.present(mediapicker1, animated: true, completion: nil)

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

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

在第10页,共18页,

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

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

有什么建议么?

完成以下步骤:

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

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

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)
            }
}

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

  • 使用self.present而不是self.presentViewController
  • 无需创建mediaPicker全局实例。 与委托方法一样,您将获得MPMediaPickerController的实例

添加隐私 - info.plist中的媒体库使用说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM