NSPopUpButton - 如何有选择地禁用某些菜单项?

时间:2011-02-02 08:13:30

标签: objective-c cocoa


我的应用程序中有一个登录页面,有两个用户 - 管理员和标准版。成功登录后,我们会进入欢迎页面,其中有一个弹出按钮。我想在标准用户的弹出按钮菜单中禁用第3和第4个菜单项 对于管理员,所有菜单项都应该可用 我希望根据用户在登录页面上的选择进行区分 请帮助我,我怎么能做到这一点?
我必须使用KVC概念吗?如果是,怎么样?

提前致谢..

2 个答案:

答案 0 :(得分:12)

你需要在这里做两件事。

  1. 要停用第三和第四个菜单项,您需要将enabled属性设置为NO

    [[yourPopUpButton itemAtIndex:2] setEnabled:NO];
    [[yourPopUpButton itemAtIndex:3] setEnabled:NO];
    
  2. autoenablesItems的{​​{1}}属性设为NSPopUpButton

    NO

    如果您未设置此选项,则单击弹出按钮时将自动启用菜单项,即使您使用步骤1禁用它们。

  3. [yourPopUpButton setAutoenablesItems:NO]; 方法中执行这些操作。


    要将登录数据存储到永久存储,您可以使用-(void)awakeFromNib。例如。

    NSUserDefaults

    此处,NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; // LINE 1: create userDefaults instance [userDefaults setObject:@"enteredUserType" forKey:@"UserType"]; // LINE 2: store a value NSString *userType = [userDefaults objectForKey:@"UserType"]; // LINE 3: retrieve the value 是用户定义的密钥。您可以定义所需的任何键。

答案 1 :(得分:0)

迅速4:

// Example NSPopUpButton
@IBOutlet weak var examplePopUpButton: NSPopUpButton!

// Set programatically or in Interface Builder
examplePopUpButton.autoenablesItems = false

// Change programmatically as needed
if let menuitem = examplePopUpButton.item(at: someIndex) {
    menuitem.isEnabled = false // or true
}