2

我正在编程让 iPhone 音乐库显示,用户选择一首歌曲,然后这首歌的标题反映在UILabel. 要是这么简单就好了!我已经尝试MPMediaItem进入一个NSString然后UILabel反映这一点,但我只是得到(null)返回!

- (IBAction)showMediaPicker:(id)sender {
    MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny];

    mediaPicker.delegate = self;
    //mediaPicker.allowsPickingMultipleItems = YES;
    mediaPicker.prompt = @"Select Your Favourite Song!";

    [self presentModalViewController:mediaPicker animated:YES];
}

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItem *) mediaItemCollection {

    NSString *titleString = [mediaItemCollection valueForProperty:MPMediaItemPropertyTitle];
    titleLabel.text = [NSString stringWithFormat:@"Title: %@",titleString];


    [self dismissModalViewControllerAnimated: YES];
}

提前致谢

4

1 回答 1

2

您正在尝试获取 mediaItemCollection 的标题。您需要像这样获取单个歌曲的标题:

MPMediaItem *selectedSong = [mediaItemCollection items] objectAtIndex:0];
NSString *titleString = [selectedSong valueForProperty:MPMediaItemPropertyTitle];

顺便说一句,您的 MPMediaPickerControllerDelegate 的委托设置错误:

它应该是:

- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection

- 你有 MPMediaItemCollection 作为一个 MPMediaItem

于 2013-01-21T21:04:52.523 回答