Mac开发|NSComboBox

相关function

NSComboBoxDataSource中包含有如下的function

/* These two methods are required when not using bindings */
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)comboBox;   // 返回CombBox显示的数量
- (nullable id)comboBox:(NSComboBox *)comboBox objectValueForItemAtIndex:(NSInteger)index;    // 返回ComboBox显示的内容

- (NSUInteger)comboBox:(NSComboBox *)comboBox indexOfItemWithStringValue:(NSString *)string;    // 高亮已选的item
- (nullable NSString *)comboBox:(NSComboBox *)comboBox completedString:(NSString *)string; // 与`Autocompletes`相配合,实现类似自动查找的功能

NSComboBoxDelegate中包含的function

/* Notifications */
- (void)comboBoxWillPopUp:(NSNotification *)notification;
- (void)comboBoxWillDismiss:(NSNotification *)notification;
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
- (void)comboBoxSelectionIsChanging:(NSNotification *)notification;

需求:

首先会在UI上创建两个NSComboBox,然后通过获取配置的plist的值分别显示在UI上

  • 创建的用户界面如下图,并且将这两个NSComboBoxidentifier分别设置为value1value2,然后再勾选Uses Data Source:
用户界面
设置NSComboBox的identifier
勾选`Uses Data Source`
  • 拖拽NSComboBoxdataSourceView Controller进行相关联

  • 接下来就是代码部分,先要遵循协议NSComboBoxDataSource,具体实现如下代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.valueContent = [[NSDictionary alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"value" ofType:@"plist"]];
}

#pragma mark -----------ComboBox function part-------------
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)comboBox {
    NSInteger num = 0;
    if ([comboBox.identifier isEqualToString:@"value1"]) {
        num = [[self.valueContent objectForKey:@"value1"] count];
    }else if ([comboBox.identifier isEqualToString:@"value2"]) {
        num = [[self.valueContent objectForKey:@"value2"] count];
    }

    return num;
}

- (nullable id)comboBox:(NSComboBox *)comboBox objectValueForItemAtIndex:(NSInteger)index {
    NSArray *comboBoxValue = [[NSArray alloc] init];
    if ([comboBox.identifier isEqualToString:@"value1"]) {
        comboBoxValue = [self.valueContent objectForKey:@"value1"];
    }else if ([comboBox.identifier isEqualToString:@"value2"]) {
        comboBoxValue = [self.valueContent objectForKey:@"value2"];
    }
    
    return [comboBoxValue objectAtIndex:index];
}
  • 最后效果图:
    效果图

其他

selectItemAtIndex:选择NSComboBox的默认值

- (NSUInteger)comboBox:(NSComboBox *)comboBox indexOfItemWithStringValue:(NSString *)string {
    NSInteger num = 0;
    num = self.valueOfUART.indexOfSelectedItem;
    
    return num;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 介绍 UIView 会占用屏幕上一个矩形的空间。 主要处理两件事:画出矩形控件,并处理其中的事件。 UIView ...
    半壶雪阅读 948评论 0 0
  • UITableView UITableView用来管理通用表格组件,通用表格组件需要考虑数据集的输入、每行数据的显...
    Hysoka阅读 409评论 0 0
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,800评论 1 9
  • 学习Mac开发第四节 学习NSSlider 认识NSSlider 层级结构 Inherits From: NSC...
    无沣阅读 1,283评论 2 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139