IB 将向您显示您可以分配给对象的类的名称。如果您只有一个自定义类(例如“myCustomClass”),那么它只会在下拉菜单中显示该类。
如果您只想使用一个类,我认为解决您的问题的最佳方法是将绘图代码放在两个单独的函数中,并为每个视图分配一个 IBOutlet,然后从控制器类中调用该函数。
//Add this to your interface
NSNumber *myColor;
//Add/Edit the following functions
- (void)drawRect:(NSRect)aRect
{
//Some code...
if ([myColor intValue]) [self drawGreen];
else [self drawRed];
//Some code...
}
- (void)drawGreen
{
NSRect bounds = [self bounds];
[[NSColor greenColor] set];
[NSBezierPath fillRect:bounds];
}
- (void)drawRed
{
NSRect bounds = [self bounds];
[[NSColor redColor] set];
[NSBezierPath fillRect:bounds];
}
- (void)drawRedOrGreen:(int)aColor
{
myColor = [NSNumber numberWithInt:aColor];
}
您必须将以下两行添加到控制器的界面
IBOutlet myCustomClass *customView1;
IBOutlet myCustomClass *customView2;
你必须设置每个视图的颜色。这将在第一次加载时设置它。
- (void)awakeFromNib
{
[customView1 drawRedOrGreen:1]; //Green
[customView2 drawRedOrGreen:0]; //Red
}
这样每个视图的颜色都会不同。
另一种解决方案是创建两个单独的自定义类(例如“myCustomClass1”和“myCustomClass2”),它们将具有自己的绘图代码......