プログラムで複数のステータス メニュー項目を追加する必要があります。以前にNSStatusItemを使用したことがありません。以下は私が持っているものです。
- (void)showStatus {
for (NSInteger i4 = 0; i4 < alertArray4.count; i4++) {
NSString *person = [[alertArray4 objectAtIndex:i4] objectForKey:key4e];
NSString *imagepath = [[alertArray4 objectAtIndex:i4] objectForKey:key4f];
NSString *nextDOB = [[alertArray4 objectAtIndex:i4] objectForKey:key4h];
NSImage *personimage;
if ([imagepath isEqualToString:@"0"]) {
personimage = [self imageResize:[NSImage imageNamed:@"userNone"] newSize:NSMakeSize(16.0f,16.0f)];
}
else {
personimage = [self imageResize:[NSImage imageNamed:@"userOne"] newSize:NSMakeSize(16.0f,16.0f)];
}
NSString *menuTitle = [NSString stringWithFormat:@"%@ in %@ days",person,nextDOB];
NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:menuTitle action:@selector(statusItemClicked:) keyEquivalent:@""];
[menuItem setImage:personimage];
}
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
statusImage = [NSImage imageNamed:@"appIcon16"];
[statusItem setImage:statusImage];
[statusItem setMenu:statusMenu];
[statusItem setTitle:alertCount.stringValue];
}
- (void)statusItemClicked:(NSString *)num {
NSLog(@"Hello");
}
そして、アプリケーションはアイテム数 = i4 のステータス メニューをポストします。私が理解していないのは、変数を statusItemClicked に渡して、ユーザーが選択したメニュー項目をアプリケーションが認識できるようにする方法です。変数 ( i4 ) を statusItemClicked に送信するにはどうすればよいでしょうか? performSelectorInBackgroundを使用すると、変数をwithObjectに追加できます。今回の場合は仕方ないと思います。
ご協力ありがとうございました。