2012-03-27 49 views
0


我正在開發一個iPhone應用程序,我遇到了一個很小的問題。實質上,當我加載某個視圖時,我希望視頻播放。當視頻播放完畢後,它會通過菜單和一些選項返回到視圖。其中一個選擇是重放視頻。目前我有重播視頻選項可用,但在視圖加載時我無法播放視頻。當新視圖加載時播放視頻

我已經實現了一個playMovie和moviePlayBackDidFinish方法。然後,我將[self playMovie]放置在viewDidLoad方法中,它認爲它最初會調用pl​​ayMovie方法,因此在視圖加載時播放影片,但似乎不起作用。

如果有人可以解釋爲什麼這種思維方式不起作用,也是這樣做的一種正確的方式,它將不勝感激。

+0

你確定視頻不玩?也許你只是看不到它。你有沒有檢查movieviewcontroller的視圖的順序?或者如果moviePlayBackDidFinish通知被觸發? – erkanyildiz 2012-03-27 20:56:42

回答

1

我會嘗試viewDidAppear而不是viewDidLoad,這取決於你的viewController。一個視圖通常只能載入一次,並且當它在後臺加載時可能會浪費。

而且,這裏有一個樣本影片沒有完成的方法,我想知道,如果你要發佈的東西,你不應該,或者從來沒有告訴電影正確停止:

- (void) moviePlayBackDidFinish:(NSNotification*)notification 
{ 
    NSNumber *reason = [[notification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey]; 
    switch ([reason integerValue]) 
    { 
      /* The end of the movie was reached. */ 
     case MPMovieFinishReasonPlaybackEnded: 
      /* 
      Add your code here to handle MPMovieFinishReasonPlaybackEnded. 
      */ 
      break; 

      /* An error was encountered during playback. */ 
     case MPMovieFinishReasonPlaybackError: 
      NSLog(@"An error was encountered during playback"); 
      [self performSelectorOnMainThread:@selector(displayError:) withObject:[[notification userInfo] objectForKey:@"error"] 
           waitUntilDone:NO]; 
      [self removeMovieViewFromViewHierarchy]; 
      [self removeOverlayView]; 
      [self.backgroundView removeFromSuperview]; 
      break; 

      /* The user stopped playback. */ 
     case MPMovieFinishReasonUserExited: 
      [self removeMovieViewFromViewHierarchy]; 
      [self removeOverlayView]; 
      [self.backgroundView removeFromSuperview]; 
      break; 

     default: 
      break; 
    } 
} 
+0

真棒謝謝埃裏克。我實現了viewDidAppear並將[self playMovie]放入其中,它非常有魅力! – Franklin 2012-03-28 13:36:10

+0

我的榮幸,祝你好運 – Eric 2012-03-28 13:37:35