Я хочу поставить пользовательский элемент управления внутри представления для моего NSCollectionViewItem.Пользовательский контроль в NSCollectionViewItem
Допустим, у меня есть пользовательский NSView с именем BoxesView.BoxesView - это просто представление, которое рисует заданное количество ящиков в его представлении. Это число полей задано в методе init. Допустим, я установил его на 8.
Когда я загружаю представление коллекции, все остальные элементы управления в представлении работают нормально (кнопки, слайдеры и т. Д.), Но мое представление не будет рисовать.
Если я установил точку останова в методе drawRect BoxesView, это показывает, что количество полей для рисования равно 0! Если я установил точку останова в моем методе init, где я установил numBoxes в 8, это покажет, что numBoxes действительно получает значение 8. Кроме того, метод init получает только один раз, хотя в представлении коллекции есть несколько строк.
Что я делаю неправильно?
UPDATE
Я был в состоянии получить эту работу, установив itemPrototype для загрузки из XIb вместо того, чтобы быть в том же XIb как NSCollectionViewItem. Это здорово, за исключением того, что он работает только с 10.6, а не с 10.5.
UPDATE 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)];
}
@end
В каком классе 'init' вы ссылаетесь?Откуда отправляется сообщение «init»? Вы проверили, что вы проверяете свойство 'numBoxes' того же представления, которое находится в элементе представления коллекции? –
Я говорил о методе инициализации BoxesView. Он вызывается лентой, загружаемой в один из моих контроллеров. Контроллер является владельцем NSCollectionView – Randall
. Измените свой вопрос, чтобы включить код, который вы используете для настройки вида коллекции, для загрузки представлений элементов, а также для создания и настройки элементов коллекционного просмотра. –