2

ストーリーボードで ID を使用して GLKViewController を定義しました。コードで別のView Controllerに追加します

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 *)view drawInRect:(CGRect)rect は呼び出されておらず、 -(void)update

GLKViewController は一時停止されておらず、その fps は 30 に設定されています。デリゲート メソッドを呼び出さないのはなぜですか? もちろん、以前のアプリでルートビューコントローラーとしてこれを行いましたが、これはもちろん機能しました。子ビュー コントローラーは iOS 5 の新機能であり、これが機能しないとは文書化されていません。私は何が欠けていますか?

答え:

欠けていたもの (他の誰かがこの問題を抱えている場合)。

[self addChildViewController:sceneController];
[[self view] addSubview:[sceneController view]]; <<<<<<<<<<<<<<<<
[sceneController didMoveToParentViewController:self];

GLKViewController にはビューが埋め込まれているため、サブビューとして追加する必要があります。そうしないと、どこにも表示されません。ああ!

4

0 に答える 0