【问题标题】:Need to cast self.view in UIViewController?需要在 UIViewController 中投射 self.view 吗?
【发布时间】:2012-06-19 08:35:29
【问题描述】:

我创建了一个UIViewController,其中包含一个带有我构建的自定义类的视图。我已将视图连接到 File's Owner 视图插座。它渲染正确,我没有任何实际问题。但是,我想从我的视图控制器实例中调用我的视图中的一个方法,比如说它叫做drawSomething。所以在我的控制器中的一个方法中,我使用:

[self.view drawSomething];

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

我觉得我错过了一些微不足道的东西。

.h 我的自定义视图包含:

-(void) drawSomething;

.m 我的自定义视图包含:

-(void) drawSomething { <code> };

【问题讨论】:

  • 你能发布你的自定义类的代码吗?这会让一切变得更容易:)

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


【解决方案1】:

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

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

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

【讨论】:

  • 好的,那么这是公认/正确的行为吗?没关系...我只是认为将其连接为 Outlet 会隐式处理。
  • 需要演员表。这是对编译器的一个承诺,MyCustomClass 在这种情况下真的可以工作。
  • 明白了,这似乎是编译器可以自己解决的问题,所以出乎意料。完美,谢谢大家。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2014-10-10
  • 1970-01-01
相关资源
最近更新 更多