그래서 나는 다음과 같은 코드가이 동적으로있는 NSArray에서 하위 메뉴 항목을 생성하고 선택에 따라 URL을 열고 나를 수NSMenuItems와 함께있는 NSArray에서 NSMenu 채우기 - 대체 제안
- (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
}
을 그 (특정 브라우저에서) 선정되었다 :
-(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];
}
내 질문이 훌륭한 작동하는 것 같다 동안, 나는 NSMenu supportLinkItem에 대한 이미지를 설정하고 싶습니다이다, 여기 내 .H 파일이 모습입니다 :
IBOutlet NSMenu *supportLinkItem;
NSMenuItem *supportLinkArrayItem;
콘센트는 하위 메뉴 항목에 연결되어 있습니다. -terminology?)를 NSmenu로 사용하면 NSMenuitem이 아닌 - (void) setImage : (NSImage *) menuImage 메서드로 액세스 할 수 없습니다. 이제는 어쩌면 내가 뭔가 이상한 짓을 한 것 같아요. 기술적으로 "Sub Menu Item"을 인터페이스 빌더로 드래그하면 NSMenu가 아닌 NSMenuItem이됩니다. 다시 말하면 내 코드는 메뉴의 이미지를 설정할 수 없다는 것을 제외하고는 완벽하게 작동합니다. 어느 날 생각도하지만, NSArray에서 하위 메뉴 집합을 채우는 비슷한 방법이있을 것입니다.