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

标签 objective-c cocoa


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

提前致谢..

最佳答案

你需要在这里做两件事。

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

    [[yourPopUpButton itemAtIndex:2] setEnabled:NO];
    [[yourPopUpButton itemAtIndex:3] setEnabled:NO];
    
  2. NSPopUpButtonautoenablesItems 属性设置为 NO

    [yourPopUpButton setAutoenablesItems:NO];
    

    如果您不设置此项,即使您使用第 1 步禁用它们,菜单项也会在您单击弹出按钮时自动启用。

-(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

这里,UserType 是一个用户定义的Key。您可以定义任何您想要的键。

关于objective-c - NSPopUpButton-如何有选择地禁用某些菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4872094/

相关文章:

ios - UICollectionView 和 UICollectionViewCell IndexPath 错误

objective-c - 使用 QTCaptureView 拍照

macos - 如何将 NSTextView 限制为 2 行?

iOS Swift EXC_BAD_ACCESS 代码2 SearchTextField(UITextField 子类)

iphone - 自定义 UITableViewCell 子类 : This class is not a key value coding-compliant

objective-c - 强标识符是@property 语句的默认值吗?

ios - 使用 HTTP Live Streaming 的备用音轨

iphone - 共享 View Controller 访问模型类

swift - MacOS:如何让 NSPanel 抵抗关键焦点(使用 becomesKeyOnlyIfNeeded?)

macos - XPC 服务不保存用户首选项