[编译器以编程方式构建ViewController的视图时,使编译器意识到NSView子类方法

问题描述 投票:0回答:1

我创建了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。

xcode macos cocoa subclass nsview
1个回答
2
投票

您有两个合理的选择。

  1. 使用正确的类型在视图控制器上使用刚刚传递给view属性的访问器。
  2. 处理类型转换。

真的,这是可以进行类型转换的情况之一。

© www.soinside.com 2019 - 2024. All rights reserved.