Заполните NSMenu из NSArray с NSMenuItems - нужны альтернативные предложения
Итак, у меня есть следующий код:
- (void)addSupportLinksMenuItems
{
NSString *subMenuTitle;
NSString *getURL;
if (!supportLinks) {
supportLinks = [[NSArray alloc] initWithArray:[settings objectForKey:@"supportLinks"]];
}
for(NSDictionary *object in supportLinks){
// A couple of Keys in the Dict inside the Array
subMenuTitle = [object objectForKey:@"subMenuTitle"];
getURL = [object objectForKey:@"getURL"];
NSInteger n = [ supportLinks indexOfObject:object];
NSInteger menuTag = n +255;
//[ supportLinkItem setImag
supportLinkArrayItem = [supportLinkItem
insertItemWithTitle:subMenuTitle
action:@selector(openSupportLink:)
keyEquivalent:@""
atIndex:n];
// Set a menu tag to programatically update in the future
[ supportLinkArrayItem setTag:menuTag];
[ supportLinkArrayItem setToolTip:getURL];
[ supportLinkArrayItem setTarget:self];
}
//supportLinkItem
}
Это динамически генерирует элементы подменю из NSArray и позволяет мне открывать URL на основе выбранного выбора (в определенном браузере):
-(IBAction)openSupportLink:(id)sender
{
NSLog(@"Was passed Menu: %@",sender);
NSInteger menuTag = [sender tag];
NSInteger n = menuTag - 255;
NSString *getURL = [[supportLinks objectAtIndex:n] objectForKey:@"getURL"];
[self openPageInSafari:getURL];
}
- (void)openPageInSafari:(NSString *)url
{
NSDictionary* errorDict;
NSAppleEventDescriptor* returnDescriptor = NULL;
NSAppleScript* scriptObject = [[NSAppleScript alloc] initWithSource:
[NSString stringWithFormat:
@"\
tell app \"Safari\"\n\
activate \n\
make new document at end of documents\n\
set URL of document 1 to \"%@\"\n\
end tell\n\
",url]];
returnDescriptor = [scriptObject executeAndReturnError: &errorDict];
[scriptObject release];
}
Мой вопрос заключается в том, что, хотя это, кажется, прекрасно работает, я хотел бы установить образ для NSLenu supportLinkItem, вот как выглядит мой.h файл:
IBOutlet NSMenu *supportLinkItem;
NSMenuItem *supportLinkArrayItem;
А выход связан с элементом подменю, так как я создал его (родительскую? -Определение?) Как NSmenu, он не позволяет мне обращаться к нему как - (void)setImage:(NSImage *) метод menuImage как это не NSMenuitem. Теперь я думаю, что, может быть, я только что сделал что-то странное, поскольку, технически, когда вы перетаскиваете "Элемент подменю" в конструктор интерфейса, это NSMenuItem, а не NSMenu, снова мой код работает безупречно, за исключением моей неспособности установить изображение меню, Который я думаю, что нет смысла, но, возможно, есть аналогичный способ чтения из NSArray для заполнения набора подменю.
1 ответ
Я смог решить эту проблему, обновив изображение в файле пера, так как он считает его nsmenuitem.