кнопка верхней панели контроллера вида не отображается - PullRequest
1 голос
/ 20 октября 2011

У меня есть следующее:

Я помещаю контроллер вида в навигационный контроллер следующим образом:

 moviePlayer = [[[CustomMoviePlayerViewController alloc] initWithPath:path2] autorelease];
    [self.navigationController pushViewController:moviePlayer animated:YES];
    self.navigationController.navigationBarHidden = YES;
    [moviePlayer readyPlayer];

И загружается видео, которое не имеет кнопки на верхней панели.

http://i54.tinypic.com/i73q08.png

После того, как я вернусь к предыдущему представлению и попытаюсь снова загрузить это представление, оно показывает это:

http://i55.tinypic.com/2mqol55.png

Внезапно в верхней панели появляется кнопка Готово .

У меня вопрос, почему он не появляется с первого раза, потому что я не изменяю код.

Это код viewController, помещенный в стек:

@implementation CustomMoviePlayerViewController

- (void) moviePlayerLoadStateChanged:(NSNotification*)notification 
{
    // Unless state is unknown, start playback
    if ([mp loadState] != MPMovieLoadStateUnknown)
    {
        // Remove observer
        [[NSNotificationCenter  defaultCenter] 
         removeObserver:self
         name:MPMoviePlayerLoadStateDidChangeNotification 
         object:nil];
        [[mp view] setFrame:CGRectMake(0, -20, 320, 400)];
        [mp setScalingMode:MPMovieScalingModeAspectFill];

        // Add movie player as subview
        [[self view] addSubview:[mp view]];   

        // Play the movie
        [mp play];
    }
}

- (void) moviePlayBackDidFinish:(NSNotification*)notification 
{    
    [[UIApplication sharedApplication] setStatusBarHidden:YES];

    // Remove observer
    [[NSNotificationCenter  defaultCenter] 
     removeObserver:self
     name:MPMoviePlayerPlaybackDidFinishNotification 
     object:nil];

    [self.navigationController popViewControllerAnimated:YES];  
}

- (void) readyPlayer
{
    mp =  [[MPMoviePlayerController alloc] initWithContentURL:movieURL];

    if ([mp respondsToSelector:@selector(loadState)]) 
    {
        // Set movie player layout
        [mp setControlStyle:MPMovieControlStyleFullscreen];
        [mp setFullscreen:YES];

        // May help to reduce latency
        [mp prepareToPlay];

        // Register that the load state changed (movie is ready)
        [[NSNotificationCenter defaultCenter] addObserver:self 
                                                 selector:@selector(moviePlayerLoadStateChanged:) 
                                                     name:MPMoviePlayerLoadStateDidChangeNotification 
                                                   object:nil];
    }  
    else
    {
        // Register to receive a notification when the movie is in memory and ready to play.
        [[NSNotificationCenter defaultCenter] addObserver:self 
                                                 selector:@selector(moviePreloadDidFinish:) 
                                                     name:MPMoviePlayerContentPreloadDidFinishNotification 
                                                   object:nil];
    }

    // Register to receive a notification when the movie has finished playing. 
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(moviePlayBackDidFinish:) 
                                                 name:MPMoviePlayerPlaybackDidFinishNotification 
                                               object:nil];
}

Спасибо! :) 1027 *

...