我在故事板中使用标识符定义了GLKViewController。我用
将它添加到代码中的另一个视图控制器sceneController = (SceneController*)[[self storyboard] instantiateViewControllerWithIdentifier:@"openglcontroller"];
sceneController.view.frame = CGRectMake(0, 120, 320, 360);
[self addChildViewController:sceneController];
我在GLKViewController的viewDidLoad中定义了
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
GLKView *v = (GLKView *)self.view;
v.delegate = self;
v.context = context;
[EAGLContext setCurrentContext:context];
我验证了这个viewDidLoad被调用,并且所有内容都应该存在。但是 - (void)glkView:(GLKView *)视图drawInRect:(CGRect)rect没有被调用,也没有 - (void)更新
GLKViewController没有暂停,其fps设置为30.为什么不调用委托方法?我在以前的应用程序中完成了这个作为根视图控制器当然工作。子视图控制器是iOS 5中的一项新功能,没有任何文档说明这不起作用。我错过了什么?
答案:
缺少什么(如果有其他人有此问题)。
[self addChildViewController:sceneController];
[[self view] addSubview:[sceneController view]]; <<<<<<<<<<<<<<<<
[sceneController didMoveToParentViewController:self];
由于GLKViewController中嵌入了一个视图,您需要将其添加为子视图,否则它不会出现在任何地方。 d&#39;!哦