Добавление NSControl в IKImageBrowserCell - PullRequest
3 голосов
/ 29 января 2011

Я создал собственный 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 Ответ

0 голосов
/ 12 марта 2015

myIKImageBrowserView.selectionIndexes () возвращает NSIndexSet выбранных в данный момент ячеек - вы можете использовать его для вызова метода removeItemsFromIndex непосредственно перед удалением слоя

https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/IKImageBrowserView/index.html

...