通常来说允许和禁用菜单项是自动的,当没有动作处理某个菜单时,菜单就自动被禁用。如果你希望通过代码实现,只需要重载validateMenuItem: 方法。代码如下:
 
- (BOOL) validateMenuItem: (id <NSMenuItem>) menuItem
{
    BOOL result = YES;
           
    if ([menuItem action] == @selector(deleteNote:)) {
        if ([notes count] == 1) {
            result = NO; // 最后一项无法删除
        }
                  
    } else if ([menuItem action] == @selector(gotoNote:)) {
        if ([notes count] == 1) {
            result = NO;
        }
    }
           
    return (result);
           
} // validateMenuItem