Я хочу поместить пользовательский элемент управления в представление для моего NSCollectionViewItem.
Допустим, у меня есть собственный NSView с именем BoxesView. BoxesView - это просто представление, которое рисует в своем представлении заранее определенное количество блоков. Это количество блоков задается в методе init. Допустим, я установил его на 8.
Когда я загружаю представление коллекции, все другие элементы управления в представлении работают нормально (кнопки, ползунки и т. Д.), Но мое представление не отрисовывается.
Если я установил точку останова в методе drawRect BoxesView, он показывает, что количество нарисованных блоков равно 0! Если я устанавливаю точку останова в моем методе init, где я устанавливаю numBoxes на 8, это показывает, что numBoxes действительно устанавливается на 8. Кроме того, метод init вызывается только 1 раз, даже если в представлении набора есть несколько строк.
Что я делаю не так?
UPDATE
Мне удалось заставить это работать, установив itemPrototype для загрузки из XIB вместо того, чтобы находиться в той же самой XIB, что и NSCollectionViewItem. Это замечательно, за исключением того, что работает только на 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)];
}
@ конец