我想在我的 NSCollectionViewItem 的视图中放置一个自定义控件。
假设我有一个名为 BoxesView 的自定义 NSView。BoxesView 只是一个在其视图中绘制预定数量的框的视图。该数量的盒子是在 init 方法中设置的。假设我将其设置为 8。
当我加载集合视图时,视图中的所有其他控件都可以正常工作(按钮、滑块等),但我的视图不会绘制。
如果我在 BoxesView 的 drawRect 方法中设置断点,则显示要绘制的框数为 0!如果我在 init 方法中设置断点,将 numBoxes 设置为 8,则表明 numBoxes 实际上设置为 8。此外,即使集合视图中有多行,init 方法也只会被调用 1 次。
我究竟做错了什么?
更新
我可以通过将 itemPrototype 设置为从 xib 加载而不是与 NSCollectionViewItem 在同一个 xib 中来实现此功能。这很好,除了它只适用于 10.6 而不是 10.5。
更新 2
我想要做的是将我的自定义视图粘贴在已经存在的 NSCollectionViewItem 的视图中。发生的情况是成员变量 mBoxWidth 被吹走并且为零,所以当它去绘制它时,什么也没有发生。
@implementation DumbView
- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
if (self) {
mBoxWidth = 3;
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect {
NSRect bounds = self.bounds;
[[NSColor redColor]set];
[NSBezierPath fillRect:NSMakeRect(bounds.origin.x, bounds.origin.y, mBoxWidth, mBoxWidth)];
}
@结尾