我创建了 NSView 的子类,它允许我通过方法 - (void)setBackgroundColor:(NSColor *)aBackgroundColor
轻松更改背景颜色。
我希望我的 View Controller 的主视图是这个子类,因此我使用 self.view = [[BetterNSView alloc] initWithFrame...
启动它。
在下一行,我尝试设置其背景颜色:[self.view setBackgroundColor:[NSColor greenColor]]
。但编译器提示说 NSView 没有方法 setBackgroundColor
。
为了解决这个问题,我需要使用类型转换:[(BetterNSView *)self.view setBackgroundColor:[NSColor greenColor]];
。这样可行。但我不想需要类型转换。
如何告诉编译器 View Controller 的 view
属性是 BetterNSView
子类?请记住,我没有使用 IB。
最佳答案
你有两个合理的选择。
- 在 View Controller 上使用正确的类型创建一个访问器,该访问器仅传递到
view
属性。 - 处理类型转换。
确实,这是可以进行类型转换的情况之一。
关于xcode - 以编程方式构建 ViewController 的 View 时,使编译器了解 NSView 子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15772886/