Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 加载OpenGL ES后不会调用UIKit代码_Ios_Objective C_Xcode_Opengl Es - Fatal编程技术网

Ios 加载OpenGL ES后不会调用UIKit代码

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的颜色时,它什么也没做 我试着在我改变颜色之前和之后记录,它确实记录了

我已经按照一个教程(我现在在第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];和[视图控制器新];他们没有改变任何事情