我以为我会尝试创建一个简单的可可应用程序。它是reddit的简单收件箱通知程序。我带来了一堆URL,并希望为每个URL创建菜单项,并带有指向该页面的链接。我想动态地设置每个动作。我需要将URL传递给方法,因此它知道要去哪里。我有一种感觉,我这样做是错的。有人能指出我正确的方向。我想创建一个NSURL并将其发送到loadMessage。
NSURL *tempURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.reddit.com%@", [[message objectForKey:@"data"] objectForKey:@"context"]]];
[temptItem setAction:@selector(loadMessage:messageUrl:)];
答案 0 :(得分:1)
该选择器不是有效的操作消息。动作可以接受一个参数或者不接受;如果他们接受一个参数,则参数中传递的对象将是发送消息的控件。
您需要做的是在控制器中创建一个方法,使用正确的对象调用loadMessage:messageURL:
方法。
答案 1 :(得分:1)
正如查克所说,那个选择器有错误的形式。一种方法是使用-representedObject
来例如将该项与URL相关联:
- (void)menuAction:(id)sender {
[[NSWorkspace sharedWorkspace] openURL:[sender representedObject]];
}
// adding an item:
NSURL *url = [NSURL URLWithString:@"http://google.com/"];
NSMenuItem *item = [[[NSMenuItem alloc] initWithTitle:@"moo"
action:@selector(menuAction:) keyEquivalent:@""] autorelease];
[item setTarget:self];
[item setRepresentedObject:url];
[item setEnabled:YES];
// insert into menu