gpt4 book ai didi

objective-c - NSCollectionViewItem 中的自定义控件

转载 作者:行者123 更新时间:2023-12-03 18:04:17 26 4
gpt4 key购买 nike

我想在 NSCollectionViewItem 的 View 中放置一个自定义控件。

假设我有一个名为 BoxesView 的自定义 NSView。BoxesView 只是一个在其 View 中绘制预定数量的框的 View 。盒子的数量是在 init 方法中设置的。假设我将其设置为 8。

当我加载 Collection View 时, View 中的所有其他控件都可以正常工作(按钮、 slider 等),但我的 View 不会绘制。

如果我在BoxesView的drawRect方法中设置断点,它显示要绘制的盒子数量为0!如果我在 init 方法中设置断点,将 numBoxes 设置为 8,则表明 numBoxes 实际上设置为 8。此外,即使 Collection View 中有多行,init 方法也仅被调用 1 次。

我做错了什么?

更新

我可以通过将 itemPrototype 设置为从 xib 加载而不是与 NSCollectionViewItem 位于同一 xib 中来实现此工作。这很棒,但它仅适用于 10.6 而不适用于 10.5。

更新2

我想做的是将我的自定义 View 粘贴到已经存在的 NSCollectionViewItem View 中。发生的情况是成员变量 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)];
}

@结束

最佳答案

我没有实现 initWithCoder。这解决了一切。

关于objective-c - NSCollectionViewItem 中的自定义控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3566972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com