У меня есть NSMenuItem с кучей элементов в нем, однако ... список просто не включен.NSMenuItem enable items
Что я имею в виду:
Это мой код:
- (void)didFetchNewList:(NSArray *)list
{
NSArray *smallList = [list subarrayWithRange:NSMakeRange(0, 10)];
NSMenu *menu = [[NSMenu alloc] initWithTitle:@""];
for (NSDictionary *dict in smallList)
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM dd @ HH:mm:ss"];
NSMenuItem *soMenuItem = [[NSMenuItem alloc] initWithTitle:
[dateFormatter stringFromDate:[dict objectForKey:@"date"]]
action:nil
keyEquivalent:@""];
[soMenuItem setEnabled:YES];
[menu addItem:soMenuItem];
}
[menu addItem:[NSMenuItem separatorItem]];
NSMenuItem *soMenuItem = [[NSMenuItem alloc]
initWithTitle:@"Settings" action:nil keyEquivalent:@"S"];
[soMenuItem setEnabled:YES];
[menu addItem:soMenuItem];
[statusItem setMenu:menu];
[statusItem setEnabled:YES];
}
Я устанавливаю все как включен, но он все еще отключен. Как я могу это решить?
Хотя пункты меню действительно имеют действительный селектор, они необязательно должны иметь цель (другими словами, цель ** может быть «nil»). Цель «nil» означает «использовать первый объект в цепочке ответчиков, который отвечает на мой селектор». Он функционально эквивалентен установке цели элемента меню в прокси-сервер «Первый ответчик» в файле nib. (См. Http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/MenuList/Articles/EnablingMenuItems.html#//apple_ref/doc/uid/20000261-74653-BAJBGJHB) – NSGod
Ага! Я уже думал о том, почему, черт возьми, у метода инициализации нет целевого аргумента. Спасибо, что поняли! – v1Axvw
Ваше второе редактирование все еще не совсем правильно: первый ответчик получит сообщение о действии, но ему не нужно его реализовывать. Если этого не произойдет, он отправит сообщение своему следующему ответчику. Это цепочка ответчиков на работе. –