IKImageBrowserView: как отобразить всплывающую подсказку для каждого элемента? - PullRequest
4 голосов
/ 08 января 2012

Я копался в документации, но не нашел, как это сделать. Как добавить всплывающую подсказку для каждого элемента в IKImageBrowserView?

1 Ответ

6 голосов
/ 08 января 2012

IKImageBrowserView является NSView, поэтому вы можете добавить прямоугольники всплывающей подсказки, используя следующие функции:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html#//apple_ref/doc/uid/20000014-SW47

Для моей реализации у меня есть браузер изображений внутри прокрутки, который не 'изменить размер, поэтому мне нужно обновлять подсказки только тогда, когда мои данные изменяются с использованием этого кода, где images - это мой массив источника данных:

[imageBrowser reloadData];
[imageBrowser removeAllToolTips];
for (int i=0; i<[images count]; i++) {
    NSRect rect = [imageBrowser itemFrameAtIndex:i];
    ImageObject *image = [images objectAtIndex:i];
    [imageBrowser addToolTipRect:rect owner:self userData:image];
}

Затем я реализовал эту функцию:

- (NSString*)view:(NSView *)view stringForToolTip:(NSToolTipTag)tag point:(NSPoint)point userData:(void *)data {
    ImageObject *image = (ImageObject*)data;
    return [image imageTitle];
}

Если ваш браузер изображений изменит свой макет (вы измените размер, добавив / удалив столбцы, или измените масштаб и т. Д.), Вам необходимо обновить все подсказки.

...