如何在Interface Builder NIB中使用GLKView设置GLKViewController库对象

时间:2012-08-08 06:57:33

标签: ios xcode interface-builder glkit

{Xcode 4.4,部署目标iOS5.0,而非故事板,使用ARC}

我一直在研究iOS和OpenGL中的OpenGL。我创建GLKViewController&amp ;; GLKView以编程方式显示许多教程。我想尝试在界面构建器中使用GLKViewController库对象,但我还没有找到任何教程或信息,除了故事板设置,我没有使用。我自己的尝试不是100%工作,所以我在这里显示我的设置截图,希望有人可以告诉我我做错了什么。只是为了澄清,它是在我所指的界面构建器中使用这个对象:

GLKViewController Library Object

我通过将一个GLKViewController对象从库中拖动到IB中进行设置,这也将子GLKView放在那里。我删除了默认视图&所以它看起来像这样:

IB Layout

我在我的OpenGLVC2类(一个GLKViewController)&中创建了一个GLKView出口属性。我这样连接了这些网点:

IB Outlets

实际上,起初我没有连接文件所有者的视图插座,因为它已经在GLKViewController对象中自动完成,但是终止时出现错误“加载了OpenGL2_iPhone笔尖但未设置视图插座”。我还将文件的所有者委托连接到GLKViewController对象,但是终止时出现错误“此类不符合密钥委托的密钥值编码”。我认为,因为IB中的GLKViewController设置为自定义类OpenGLVC2,GLKViewController 文件的所有者,一旦它们在运行时被拼接在一起,但显然我错了。< / p>

所以如上面的屏幕截图所示连接它,设置实际上只能绘制到屏幕一次,但我没有得到渲染循环(即更新方法不会触发),&amp;其他方法如shouldAutorotateToInterfaceOrientation:不要开火。看来我的OpenGL2VC类的GLKView委派工作正常,但我的GLKViewController却没有。

使用IB nib方法是否可以使用GLKViewController&amp; GLKView方法在同一个GLKViewController类中?这就是我在教程中以编程方式完成的(实际上,第一步所有代码都在AppDelegate中)。这是我的身份和屏幕截图属性检查员为GLKViewController&amp; GLKView,以防出现错误:

Identity and Attribute Inspectors

提前致谢。

1 个答案:

答案 0 :(得分:0)

我对你的笔尖感到奇怪的是它里面的GLKViewController对象。通常文件的所有者属于GLKViewController类型,下方只有GLKView。这可以通过下面的图片来说明。

enter image description here

我为控制器创建nib的常用过程是添加视图类型的新nib文件,并将文件所有者的类设置为我正在使用的控制器类。

注意:我无法从nib中明确地将GLKViewController的委托设置为self,但这可以在代码中完成。