在以编程方式构建ViewController视图时,使编译器知道NSView子类方法

时间:2013-04-02 19:39:43

标签: xcode macos cocoa subclass nsview

我创建了NSView的子类,允许我通过方法- (void)setBackgroundColor:(NSColor *)aBackgroundColor轻松更改背景颜色。

我希望我的视图控制器的主视图成为这个子类,所以我用self.view = [[BetterNSView alloc] initWithFrame...启动它。

在下一行,我尝试设置其背景颜色:[self.view setBackgroundColor:[NSColor greenColor]]。但编译器抱怨说,NSView没有方法setBackgroundColor

要解决此问题,我需要使用类型转换:[(BetterNSView *)self.view setBackgroundColor:[NSColor greenColor]];。这样可行。但是我不想要进行类型转换。

如何告诉编译器视图控制器的view属性是BetterNSView子类?记住,我没有使用IB。

1 个答案:

答案 0 :(得分:2)

你有两个合理的选择。

  1. 使用刚刚传递到view属性的正确类型在视图控制器上创建一个访问者。
  2. 处理类型转换。
  3. 真的,这是类型转换正常的情况之一。