How to play the movie on AVPlayer

I can create the video page on UIViewController.

But I have some problem on reviewer team.

It is minimum functionary and concept is failer.


The code is like this.

And then I wanna know how to create the playlist pages.

Somebody, tell me how!

@interface SecondViewController (){
    NSArray *item;
}
- (IBAction)button1:(UIButton *)sender;
- (IBAction)button2:(UIButton *)sender;
- (IBAction)button3:(UIButton *)sender;
- (IBAction)button4:(UIButton *)sender;
- (IBAction)button5:(UIButton *)sender;
- (IBAction)button6:(UIButton *)sender;
- (IBAction)button7:(UIButton *)sender;
- (IBAction)button8:(UIButton *)sender;
- (IBAction)button9:(UIButton *)sender;
- (IBAction)button10:(UIButton *)sender;
@property (weak, nonatomic) IBOutlet UIImageView *image;


@property (weak, nonatomic) IBOutlet UIButton *button1;
@property (weak, nonatomic) IBOutlet UIButton *button2;
@property (weak, nonatomic) IBOutlet UIButton *button3;
@property (weak, nonatomic) IBOutlet UIButton *button4;
@property (weak, nonatomic) IBOutlet UIButton *button5;
@property (weak, nonatomic) IBOutlet UINavigationBar *tab;
@property (weak, nonatomic) IBOutlet UIButton *button6;
@property (weak, nonatomic) IBOutlet UIButton *button7;
@property (weak, nonatomic) IBOutlet UIButton *button8;
@property (weak, nonatomic) IBOutlet UIButton *button9;
@property (weak, nonatomic) IBOutlet UIButton *button10;
@property (weak, nonatomic) IBOutlet UINavigationItem *title1;
@property AVPlayer *avPlayer;
@property AVPlayerViewController *controller;
@property NSURL *url;
@property (assign) NSInteger counter;
-(void)player;
-(void)itemChange;
-(void)setVideoFinishObserver;
@end

@implementation SecondViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    _image.center = CGPointMake(self.view.frame.size.width/2, 122);
    _button1.frame = CGRectMake(0, 248, self.view.frame.size.width, 30);
    _button2.frame = CGRectMake(0, 286, self.view.frame.size.width, 30);
    _button3.frame = CGRectMake(0, 324, self.view.frame.size.width, 30);
    _button4.frame = CGRectMake(0, 365, self.view.frame.size.width, 30);
    _button5.frame = CGRectMake(0, 403, self.view.frame.size.width, 30);
    _button6.frame = CGRectMake(0, 441, self.view.frame.size.width, 30);
    _button7.frame = CGRectMake(0, 479, self.view.frame.size.width, 30);
    _button8.frame = CGRectMake(0, 517, self.view.frame.size.width, 30);
    _button9.frame = CGRectMake(0, 555, self.view.frame.size.width, 30);
    _button10.frame = CGRectMake(0, 593, self.view.frame.size.width, 30);
    _tab.frame = CGRectMake(0, self.view.frame.size.height-44, self.view.frame.size.width, 44);
    item = @[@"url.mp4", @"url2.mp4", @"url3.mp4", @"url5.mp4", @"url6.mp4", @"url7.mp4", @"url8.mp4", @"url9.mp4", @"url10.mp4", @"url11.mp4"];
    _controller = [[AVPlayerViewController alloc]init];
}

-(void)setVideoFinishObserver{
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:_controller.player.currentItem];
}
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if(object == _avPlayer&&[keyPath isEqualToString:@"item"]){
        NSNumber *newValue = [change objectForKey:NSKeyValueChangeNewKey];
        int intValue = newValue.intValue;
        if(intValue == 0){
            [item[_counter] setValue:@"paused" forKey:@"rate"];
            [_avPlayer pause];
        } else if(intValue > 0) {
            [item[_counter] setValue:@"playing" forKey:@"rate"];
            [_avPlayer play];
        }
    }
}
-(void)itemDidFinishPlaying:(NSNotification *)notification{
    [_avPlayer removeObserver:self forKeyPath:@"item"];
    _counter += 1;
    _url = [NSURL URLWithString:item[_counter]];
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:_url];
    _avPlayer = [AVPlayer playerWithPlayerItem:playerItem];
    [self player];
}

-(void)player{
    _url = [NSURL URLWithString:item[_counter]];
    _avPlayer = [AVPlayer playerWithURL:_url];
    _controller.player = _avPlayer;
    _controller.view.frame = CGRectMake(0, 0, self.view.frame.size.width, 240);
    [self addChildViewController:_controller];
    [self.view addSubview:_controller.view];
    [_avPlayer play];
    [self itemChange];
    [_avPlayer addObserver:self forKeyPath:@"item" options:(NSKeyValueObservingOptionNew) context:nil];
    [self setVideoFinishObserver];
    [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance]setActive:YES error:nil];
    [self becomeFirstResponder];
}
-(void)itemChange{
    if(_counter == 0){
        UIColor *bgColor =[UIColor purpleColor];
        [_button1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        _button1.backgroundColor = bgColor;
        _title1.title = @"song name1";
    } else {
        UIColor *bgColor2 = [UIColor blueColor];
        [_button1 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
        _button1.backgroundColor = bgColor2;
    }
    if(_counter == 1){
        UIColor *bgColor = [UIColor purpleColor];
        [_button2 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        _button2.backgroundColor = bgColor;
        _title1.title = @"song name2";
    } else {
        UIColor *bgColor2 = [UIColor blueColor];
        [_button2 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
        _button2.backgroundColor = bgColor2;
    }
    if(_counter == 2){
        UIColor *bgColor = [UIColor purpleColor];
        [_button3 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        _button3.backgroundColor = bgColor;
        _title1.title = @"song name3";
    } else {
        UIColor *bgColor2 = [UIColor blueColor];
        [_button3 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
        _button3.backgroundColor = bgColor2;
    }
    if(_counter == 3){
        UIColor *bgColor = [UIColor purpleColor];
        [_button4 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        _button4.backgroundColor = bgColor;
        _title1.title = @"song name4";
    } else {
        UIColor *bgColor2 = [UIColor blueColor];
        [_button4 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
        _button4.backgroundColor = bgColor2;
    }
    if(_counter == 4){
        UIColor *bgColor = [UIColor purpleColor];
        [_button5 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        _button5.backgroundColor = bgColor;
        _title1.title = @"song name5";
    } else {
        UIColor *bgColor2 = [UIColor blueColor];
        [_button5 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
        _button5.backgroundColor = bgColor2;
    }
    if(_counter == 5){
        UIColor *bgColor = [UIColor purpleColor];
        [_button6 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        _button6.backgroundColor = bgColor;
        _title1.title = @"song name6";
    } else {
        UIColor *bgColor2 = [UIColor blueColor];
        [_button6 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
        _button6.backgroundColor = bgColor2;
    }
    if(_counter == 6){
        UIColor *bgColor = [UIColor purpleColor];
        [_button7 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        _button7.backgroundColor = bgColor;
        _title1.title = @"song name7";
    } else {
        UIColor *bgColor2 = [UIColor blueColor];
        [_button7 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
        _button7.backgroundColor = bgColor2;
    }
    if(_counter == 7){
        UIColor *bgColor = [UIColor purpleColor];
        [_button8 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        _button8.backgroundColor = bgColor;
        _title1.title = @"song name8";
    } else {
        UIColor *bgColor2 = [UIColor blueColor];
        [_button8 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
        _button8.backgroundColor = bgColor2;
    }
    if(_counter == 8){
        UIColor *bgColor = [UIColor purpleColor];
        [_button9 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        _button9.backgroundColor = bgColor;
        _title1.title = @"song name9";
    } else {
        UIColor *bgColor2 = [UIColor blueColor];
        [_button9 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
        _button9.backgroundColor = bgColor2;
    }
    if(_counter == 9){
        UIColor *bgColor = [UIColor purpleColor];
        [_button10 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        _button10.backgroundColor = bgColor;
        _title1.title = @"song name10";
    } else {
        UIColor *bgColor2 = [UIColor blueColor];
        [_button10 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
        _button10.backgroundColor = bgColor2;
    }
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    [_avPlayer pause];
}
- (IBAction)button1:(UIButton *)sender {
    _counter = 0;
    [self player];
    [self itemChange];
}

- (IBAction)button2:(UIButton *)sender {
    _counter = 1;
    [self player];
    [self itemChange];
}

- (IBAction)button3:(UIButton *)sender {
    _counter = 2;
    [self player];
    [self itemChange];
}

- (IBAction)button4:(UIButton *)sender {
    _counter = 3;
    [self player];
    [self itemChange];
}

- (IBAction)button5:(UIButton *)sender {
    _counter = 4;
    [self player];
    [self itemChange];
}

- (IBAction)button6:(UIButton *)sender {
    _counter = 5;
    [self player];
    [self itemChange];
}

- (IBAction)button7:(UIButton *)sender {
    _counter = 6;
    [self player];
    [self itemChange];
}

- (IBAction)button8:(UIButton *)sender {
    _counter = 7;
    [self player];
    [self itemChange];
}

- (IBAction)button9:(UIButton *)sender {
    _counter = 8;
    [self player];
    [self itemChange];
}

- (IBAction)button10:(UIButton *)sender {
    _counter = 9;
    [self player];
    [self itemChange]; 
}
@end

Replies

#import <AVKit/AVKit.h>
#import <AVFoundation/AVFoundation.h>
#import <UIKit/UIKit.h>

is added.