我创建了一个UIViewController,其中包含一个带有构建的自定义类的视图。我已将视图连接到“文件的所有者”视图出口。它渲染正确,我没有任何实际问题。但是,我想从我的视图控制器实例中调用我的视图中的一个方法,说它叫做drawSomething。因此,在控制器的方法中,我使用:

[self.view drawSomething];

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

我觉得自己缺少一些琐碎的东西。

我的自定义视图的.h包含:
-(void) drawSomething;

我的自定义视图的.m包含:
-(void) drawSomething { <code> };

最佳答案

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

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

否则,您将在不存在的标准drawSomething上调用UIView

10-08 09:26