需要在UIViewController中强制转换self.view吗?

时间:2012-06-16 15:35:18

标签: objective-c ios model-view-controller uiview uiviewcontroller

我创建了一个UIViewController,其中包含一个我自己构建的自定义类的视图。我已将视图连接到文件的所有者视图插座。它渲染得恰到好处,我没有任何实际问题。但是,我想从我的视图控制器实例中调用我视图中的方法,比如说它叫drawSomething。所以在我的控制器中的一个方法中,我使用:

[self.view drawSomething];

有效。但是我得到了一个预编译器警告,因为它似乎不知道我的自定义视图定义中的方法。我的方法在这里错了吗?我可以创建一个局部变量并投射它以使警告显然消失。我已经导入了视图的头文件,所以这不是问题。

我觉得我错过了一些微不足道的事情。

我的自定义视图的

.h包含:

-(void) drawSomething;
我的自定义视图的

.m包含:

-(void) drawSomething { <code> };

1 个答案:

答案 0 :(得分:12)

self.view基本上是指向用作视图控制器主视图的UIView的指针。由于您的视图是使用自定义方法的自定义类,因此您需要对自定义类进行强制转换以调用自定义方法:

[((MyCustomClass *)self.view) drawSomething];

否则,您在标准drawSomething上呼叫UIView,但该号码不存在。