Добавление NSControl в IKImageBrowserCell
Я создал собственный IKImageBrowserCell, который отображает мои изображения в IKImageBrowser без каких-либо проблем.
Я хотел бы попытаться переопределить встроенную функцию удаления изображения IKImageBrowser. В настоящее время "из коробки" вы можете выбрать изображение или несколько изображений и нажать BACKSPACE для удаления.
Я хотел бы добавить NSButton или аналогичный, чтобы включить те же функции на каждом изображении.
Я добавил следующий код, чтобы показать значок удаления на IKImageBrowserCell, когда он выбран:
- (CALayer *) layerForType:(NSString*) type {
CGColorRef color;
//retrieve some usefull rects
NSRect frame = [self frame];
NSRect imageFrame = [self imageFrame];
NSRect relativeImageFrame = NSMakeRect(imageFrame.origin.x - frame.origin.x, imageFrame.origin.y - frame.origin.y, imageFrame.size.width, imageFrame.size.height);
if(type == IKImageBrowserCellForegroundLayer){
//no foreground layer on place holders
if([self cellState] != IKImageStateReady)
return nil;
//create a foreground layer that will contain several childs layer
CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(0, 0, frame.size.width, frame.size.height);
if([self isSelected]){
//add a delete icon
CALayer *deleteLayer = [CALayer layer];
[deleteLayer setContents:(id)deleteImage()];
deleteLayer.frame = CGRectMake(relativeImageFrame.size.width-14, (relativeImageFrame.origin.y+relativeImageFrame.size.height)-14, 28, 28);
[layer addSublayer:deleteLayer];
}
}
}
Это прекрасно работает, но, очевидно, просто статичное изображение. Можно ли каким-то образом попытаться получить событие, нажав этот значок удаления, а затем вернуть индекс выбранной ячейки в IKImageBrowser, чтобы вызвать его метод removeItemsFromIndex:? Я застрял!
1 ответ
myIKImageBrowserView.selectionIndexes() возвращает NSIndexSet выбранных в данный момент ячеек - вы можете использовать это для вызова метода removeItemsFromIndex непосредственно перед удалением слоя