У меня есть следующее:
Я помещаю контроллер вида в навигационный контроллер следующим образом:
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 *