Ios dismissViewControllerAnimated导致再次加载同一视图控制器
我的设想如下:Ios dismissViewControllerAnimated导致再次加载同一视图控制器,ios,cocoa,ios7,Ios,Cocoa,Ios7,我的设想如下: 当应用程序加载时,第一个控制器是 应用程序第一次启动时,加载控制器B,该控制器显示视频。A在其视图显示方法中使用performsguewithidentifier加载B。B B使用mpmovieplayervewcontroller显示视频。B使用MPMoviePlayerPlaybackDidFinishNotification识别视频已完成,然后执行: [自解除视图控制器激活:未完成:无] 解除呼叫导致B重新加载(电影再次播放),控制台中出现以下错误: :CGImageCre
视图显示
方法中使用performsguewithidentifier
加载B。Bmpmovieplayervewcontroller
显示视频。B使用MPMoviePlayerPlaybackDidFinishNotification
识别视频已完成,然后执行:[自解除视图控制器激活:未完成:无]代码>
如何解决此问题?问题在于在ViewController A的
viewdide:
方法中显示ViewController B的逻辑
当B完成并解除时,A的视图显示:
(再次)将被调用,这反过来将再次显示B,循环将继续,直到某个东西腐烂
基本上:
viewDidLoad
viewdide出现:
viewdide出现:
或者。。。如果此电影必须只播放一次,则您可以在A的
viewDidLoad
中显示B。我将设置一个类似于didMoviePlay的属性,并检查在viewdide:
中是否显示该电影以决定是否播放该电影。这样,如果电影播放出现错误,您可以决定如何从那里继续。调用dismissViewControllerAnimated
将导致在第一个视图控制器A上再次调用viewdide
但是,您可以使用方法-(BOOL)[UIViewController isBeingPresented]
来区分首次显示此视图控制器的时间
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if ([self isBeingPresented]) {
[self performSegueWithIdentifier:@"YourSegueIdentifier" sender:self];
}
}
逻辑没有问题-A在ViewDid中调用B只出现一次。在解除后,根本不会调用的viewDidAppearcall@ErikSapir:好的。然后。。。请在您的问题中添加相关代码。在B解雇后,应调用A的视图(上面的步骤5)。如果不是的话,那就大错特错了。这就是我正在做的事情——只调用一次viewDiDAppear。在尝试取消B之后,ViewDid似乎甚至没有被调用