2012-09-08 98 views
2

我有一個視圖控制器播放視頻viewDidLoad。我有一個觀察者檢查視頻何時完成,以及何時檢測到視頻已完成,調用將視圖控制器推入堆棧的方法。當這個方法被調用,但是,收到以下錯誤控制檯:推視圖控制器時,應用程序崩潰

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSPathStore2 setView:]: unrecognized selector sent to instance 0xc6ef8e0'

我用的代碼如下所示:

.... 
.... 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(advanceToNextView) name:MPMoviePlayerPlaybackDidFinishNotification object:player]; 
.... 
.... 
- (void) advanceToNextView { 

    UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"spoonVC"]; 


    [self.navigationController pushViewController:controller animated:NO]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.navigationController.view cache:NO]; 
    [UIView commitAnimations]; 

} 

我不知道我是什麼做錯了。我已檢查並仔細檢查故事板標識符是否正確。

+0

它看起來像你的應用程序使用的一些內存可能變得慘敗地方。 - [NSPathStore2 setView:]意味着「setView」在NSPathSTore2實例上調用,不應該發生。你有沒有運行配置文件,並消除內存泄漏? – Brian

+0

你使用的是弧形嗎? – HeikoG

+0

@BrianV不,我沒有。我從來沒有運行過這個配置文件,也不太瞭解它。我使用ARC,無論正確還是錯誤,都認爲內存泄漏不是問題? – garethdn

回答

0

它找到了一個解決方案。製作過渡動畫的方式似乎並不一致,但以下方面對我來說似乎很有效。

UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"page2"]; 
    [UIView beginAnimations:@"Flip transition" context:nil]; 
    [UIView setAnimationDuration:0.80]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationTransition: 
    UIViewAnimationTransitionCurlDown 
          forView:self.navigationController.view cache:NO]; 
    [self.navigationController pushViewController:controller animated:YES]; 
    [UIView commitAnimations]; 
3

替換您的驗證碼

[self.navigationController pushViewController:controller animated:NO]; 

BY:

[self.navigationController pushViewController:controller animated:YES]; 
相關問題