Ios 加载OpenGL ES后不会调用UIKit代码
我已经按照一个教程(我现在在第3部分)学习了基本的OpenGL ES for iOS 我想制作一个播放/重启菜单,所以我开始使用UIViewController和GLView。现在,无论何时我从UIViewController结束游戏,我都可以记录我的游戏状态和每一帧,但每次我使用UIKit调用时,它都会在viewDidLoad中被忽略。我尝试了一些小的东西,比如改变HUD视图的颜色,这是可行的,但是当我在游戏结束时改变HUD的颜色时,它什么也没做 我试着在我改变颜色之前和之后记录,它确实记录了 这是我在游戏结束时调用的代码:Ios 加载OpenGL ES后不会调用UIKit代码,ios,objective-c,xcode,opengl-es,Ios,Objective C,Xcode,Opengl Es,我已经按照一个教程(我现在在第3部分)学习了基本的OpenGL ES for iOS 我想制作一个播放/重启菜单,所以我开始使用UIViewController和GLView。现在,无论何时我从UIViewController结束游戏,我都可以记录我的游戏状态和每一帧,但每次我使用UIKit调用时,它都会在viewDidLoad中被忽略。我尝试了一些小的东西,比如改变HUD视图的颜色,这是可行的,但是当我在游戏结束时改变HUD的颜色时,它什么也没做 我试着在我改变颜色之前和之后记录,它确实记录了
void PlayerStatus::returnToMenu() {
NSLog(@"returned to menu");
newIntProg++;
newIntProg++;
ViewController *vCont = [ViewController alloc];
[vCont setGameProgVal:newIntProg];
//return;
}
下面是来自viewController的调用:
- (void) setGameProgVal:(int)newProg {
[gvar setNewValFrom:newProg];
//NSLog(@"%i", newProg);
if (newProg == 2) {
NSLog(@"%i", newProg);
NSLog(@"it works...");
[HUDView setAlpha:1.0];
NSLog(@"this works to");
[HUDView setBackgroundColor:[UIColor greenColor]];
NSLog(@"this allso works");
}
所有NSLog调用都已执行,但HUD颜色不变。我不清楚在
viewDidLoad
中忽略UIKit调用是什么意思。为什么该方法会有以前调用的历史记录?此外,您需要[[ViewController alloc]init]
或[ViewController new]
,而不仅仅是[ViewController alloc]
。在Objective-C中,构造函数是按约定调用的,而不是作为语言的一部分,因此alloc
单独创建空间,但实际上并不进行构造。在allocWithZone:
被弃用之前,它更有意义,但我认为,在运行时的小范围内,它仍然是可以防御的new
是在NSObject
上定义的,用于调用alloc
和init
。我的代码被vewDidLoad调用,但当我从我的ViewController中的OpenGL ES代码中调用UIKit方法时,我得到了我添加的NSLog,但不是实际的UIKit更改allo,我尝试了[[ViewController alloc]init];和[视图控制器新];他们没有改变任何事情