MpMoviePlayerViewController закрывается после setContentURL - PullRequest
1 голос
/ 16 декабря 2010

Я делаю mpmovieplayerviewcontroller и загружаю в него фильм (из потока). Теперь у меня есть вызов метода setContentURL, который меняет URL, и он работает. Когда приложение запускается впервые, оно показывает вид с помощью кнопки, после нажатия кнопки открывает проигрыватель фильмов и загружает фильм. Но когда я вызываю код, где setContentURL player закрывает его сам, сначала возвращаюсь к первому представлению, где я должен снова нажать кнопку воспроизведения, чтобы снова открыть проигрыватель (чтобы он запоминал и загружал новый URL). Как запретить игроку не закрывать себя при переключении URL? Это должно быть небольшая проблема, пожалуйста, помогите :) Это код при нажатии кнопки воспроизведения (первый просмотр)

-(void)initializeMovieFromStream:(NSString *)var
{
    if(player != nil)
    {
        NSString *title = [[NSString alloc] initWithFormat:@"%@%@%@", @"http://"];
        NSURL *nurl = [NSURL URLWithString:title];
        NSLog(@"Switching channel...");
        [player.moviePlayer setContentURL:nurl];    
        isMoviePaused = NO;
    }
    else
    {       
        NSString *title = [[NSString alloc] initWithFormat:@"%@%@%@", @"http://"];
        NSURL *nurl = [NSURL URLWithString:title];

        player = [[MPMoviePlayerViewController alloc] initWithContentURL:nurl];
        [player.moviePlayer.view.window setUserInteractionEnabled:YES];
        player.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
        player.moviePlayer.controlStyle = MPMovieControlStyleNone;



    }   
    [[NSNotificationCenter defaultCenter]
     addObserver:self selector:@selector(movieFinishedPlaying:)
     name:MPMoviePlayerPlaybackDidFinishNotification
     object:[player moviePlayer]];

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(nowPlayingMovieDidChange:) 
                                                 name:MPMoviePlayerNowPlayingMovieDidChangeNotification 
                                               object:nil];

    [self presentModalViewController:player animated:YES];
    //[self presentMoviePlayerViewControllerAnimated:player];

    UIView *mv = player.view;
    //[mv setFrame:CGRectMake(0, 0, 320, 480)];
    [mv addSubview:myOverlayChannelPicker];
    [mv bringSubviewToFront:myOverlayChannelPicker];

    // register this class to observe TestNotification that comes from OverlayChannelPicker
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(receiveTestNotification:) 
                                                 name:@"TestNotification"
                                               object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(pauseStreamNotificationHandler:) 
                                                 name:@"notiPauseStream"
                                               object:nil];

}

-(void) movieFinishedPlaying: (NSNotification *)note
{
    [[NSNotificationCenter defaultCenter]
     removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification
     object:[player moviePlayer]];

    //[player release]; 
}

Когда нужно переключить URL, я использую этот обработчик нитирования

- (void) receiveTestNotification:(NSNotification *) notification
{   
    NSString *stringFromNote = (NSString *)[notification object];
    [switchableChannel setString:stringFromNote];
    [self initializeMovieFromStream:stringFromNote];        
}

Решено, я просто изменяю свойство анимации на NO.

...