音频(6):iPod Library Access Programming Guide:Using the Media Item Picker


Using the Media Item Picker

使用媒体项选择器

媒体项选择器是封装好的让用户从设备iPod库中选择媒体项的视图控制器。使用选择器非常简单:

1.指定一个控制器对象作为选择器的代理。

2.从控制器调用选择器。

3.当用户表示他们已经完成,这个代理接收选择的媒体项集合并且移走选择器。


Setting Up a Media Item Picker Delegate

设置媒体项选择器代理

想要设置控制器对象作为媒体项选择器的代理,首先要添加一个协议的名字到控制器的头文件的接口申明处,如下所示:

@interface myController : UIViewController <MPMediaPickerControllerDelegate> {


   // interface declaration


}


接下来,实现两个来自协议的代理方法。第一个方法,如代码清单3-1所示,响应用户选择的一些媒体项。它移除选择器且调用控制器的播放队列的更新方法。

代码清单 3-1  响应一个新的从选择器获得的媒体项集合

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker


  didPickMediaItems: (MPMediaItemCollection *) collection {



   [self dismissModalViewControllerAnimated: YES];


   [self updatePlayerQueueWithMediaCollection: collection];


}


如何更新播放队列详见 Listing 2-5.

第二个选择器的代理方法处理用户点击完成但没有选择任何项目的情况。代码清单3-2是这种方法的基本实现。

代码清单 3-2  响应如果用户取消选择器

- (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker {



   [self dismissModalViewControllerAnimated: YES];


}


Displaying a Media Item Picker

显示一个媒体项选择器


代码清单3-3显示了如何配置和显示一个媒体项选择器——包括建立作为选择器代理的控制器对象。

代码清单 3-3  显示一个媒体项选择器

MPMediaPickerController *picker =

   [[MPMediaPickerController alloc]

       initWithMediaTypes: MPMediaTypeAnyAudio];                   // 1



[picker setDelegate: self];                                         // 2


[picker setAllowsPickingMultipleItems: YES];                        // 3


picker.prompt =

   NSLocalizedString (@"Add songs to play",

                       "Prompt in media item picker");


[myController presentModalViewController: picker animated: YES];    // 4


[picker release];


代码实现了以下功能:

1.Creates a media item picker. The parameter indicates the sort of media items to display.创建一个媒体项选择器。参数表示媒体项的显示排序。 详细的选项参看 Media Item Type Flags 枚举类型。

2.将代理设置为你的控制器对象。

3.指定用户可以选择多个项。默认行为是不允许多选。

4.Displays the picker. 显示选择器。myController对象保留它所以你之后一定要释放它。