代码之家  ›  专栏  ›  技术社区  ›  TheJeff

MPMediaPicker不显示

  •  0
  • TheJeff  · 技术社区  · 6 年前

    我已经在信息列表文件,这就是为什么我的文章不同于网上找到的任何其他答案。

    我也尝试过添加CoreMedia.framework文件.

    我用的是xcode10beta4

    谢谢你的帮助!

    头文件:

    #import <UIKit/UIKit.h>
    #import <MediaPlayer/MPMediaPickerController.h>
    
    @interface ViewController : UIViewController<MPMediaPickerControllerDelegate>
    
    @end
    

    Objc文件:

    #import "ViewController.h"
    #import <MediaPlayer/MediaPlayer.h>
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController {
        MPMediaPickerController *picker;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    }
    
    - (IBAction)selectButtonPressed:(id)sender {
    
        picker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAnyAudio];
        [picker setDelegate: self];
        [picker setAllowsPickingMultipleItems: NO];
        picker.prompt = @"Select a Song.";
    
        UIViewController *rootController = [UIApplication sharedApplication].keyWindow.rootViewController;
    
        [rootController presentViewController:picker animated:YES completion:^{
            NSLog(@"Complete!");
        }];
    }
    
    - (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) collection {
    
        MPMediaItem *firstItem;
        for (MPMediaItem *item in collection.items) {
            firstItem = item;
            break;
        }
    
        MPMusicPlayerController *samplePlayer  = [MPMusicPlayerController applicationMusicPlayer];
        [samplePlayer setShuffleMode: MPMusicShuffleModeOff];
        [samplePlayer setRepeatMode: MPMusicRepeatModeOne];
        [samplePlayer beginGeneratingPlaybackNotifications];
    
        // self.mediaItem chosen using MPMediaPickerController
        [samplePlayer setQueueWithItemCollection:[[MPMediaItemCollection alloc] initWithItems:@[firstItem]]];
        [samplePlayer prepareToPlay];
    
        // Assume that song is at least 120 seconds long
        [samplePlayer play];
    }
    
    #pragma mark - delegate methods and segues
    
    - (void) mediaPickerDidCancel: (MPMediaPickerController *) mediaPicker {
        [self dismissViewControllerAnimated:true completion:^{
        }];
    }
    @end
    
    0 回复  |  直到 6 年前