在我的应用程序中,我想在第一个屏幕上显示一部电影(第一次用户打开一个应用程序),当电影完成运行时,应该显示登录屏幕。
我有两个问题:
我尝试这样做的方法是在单独的控制器上显示视频,当电影结束时,执行segue到登录控制器。这是正确的方法吗?
我收到performSegueWithIdentifier
时正在MPMoviePlayerPlaybackDidFinishNotification
。问题是没有任何反应。视频保留在屏幕上,控制器未更改。我在控制台中没有看到任何错误。从NSNotificationCenter
通知执行segue是否有问题?
答案 0 :(得分:1)
执行此操作的可能方法是反转viewController层次结构。
[self.delegate introVideoDidFinishPlaying];
。这会将控制权转移回loginViewController,然后可以关闭presentViewController。我不熟悉如何使用故事板,但这种方法肯定适用于笔尖。
答案 1 :(得分:1)
正如我评论的那样,在你的loginViewController的.h文件中......
#import <UIKit/UIKit.h>
#import "cocos2d.h"
#import "cocos2d.h"
@interface VPViewController : UIViewController<CCDirectorDelegate>
@property (nonatomic, strong) IBOutlet CCGLView *glView;
在你的.m loginViewController ...
@synthesize glView=glView_;
使用viewDidLoad
方法
CGRect glViewFrame = self.glView.frame;
CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == IPHONE_5_SCREEN_SIZE) {
glViewFrame.size.height = 578;
}else{
glViewFrame.size.height = 490;
}
[self.glView setFrame:glViewFrame];
CCDirector *director = [CCDirector sharedDirector];
[director setDisplayStats:NO];
[director setView:glView_];
// Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
if( ! [director enableRetinaDisplay:YES] )
CCLOG(@"Retina Display Not supported");
// turn on multiple touches
[glView_ setMultipleTouchEnabled:YES];
CCScene *scene = [CCScene node];
glClearColor(0,0,0,0);
[scene setRotation:90.0f];
if([director enableRetinaDisplay:YES] && [self returnMaxTextureSize] == 2048){
// this is a device with 2.0 scale factor and a max texture size of 2048 pixels
NSLog(@"2048 only");
[scene setScale:2.0f];
}else{
[scene setScale:1.5f];
}
CCSprite * bg = [CCSprite spriteWithFile:@"login_background_white.png"];
[bg setRotation:-90.0f];
[bg setScale:0.8f];
[bg setPosition:ccp(155, 270)];
[scene addChild:bg z:-1];
[scene addChild: [VPAnimation node]];
[director pushScene:scene];
[director startAnimation];
最后,在你的xib ......