注意:在NSTableView中的NSComboBoxCell,每行中的该列是共享的,所以我们只需要对该列数据添加一次数据即可。

第一种做法 Interface-Builder直接刚,


注意 取消勾选 Uses Data Source

第二种做法,使用 Value Selection


注意选择Content Views

self.comboBoxData就是你的AppDelegate中定义的一个属性咯。

//  下拉框数据
@property (nonatomic,strong) NSArray* ComboBoxCellData;
//  初始化下拉框数据
self.comboBoxCellData = @[@"text",@"textarea",@"password",@"datetime"];

第三种做法,使用直接添加


注意使用Interface-Builder将元素拖拽到代码里做个Outlet

  1. 打开你的XIB文件
  2. 选择双环
  3. ComboBoxCell直接拖拽到你的AppDelegate属性区

    注意别弄错了,要弄Cell不是Column,之后你就可以直接添加数据给它了

例如:

[self.comboBoxCell addItemsWithObjectValues:@[@"text",@"textarea",@"password",@"datetime",@"hidden"]];

第四种做法,使用NSComboBoxCellDataSource


开启元素的Uses Data Source哦别忘了!
image.png

这里说一下,XCode可以两种方式实现dataSource

  1. 代码设置dataSource

    //  设置下拉框数据源
    [self.comboBoxCell setDataSource:self];
  2. Interface-Builder拖拽实现dataSource

设置好dataSource,然后在代码里实现NSComboBoxDataSource协议,例如:

@interface AppDelegate () <NSComboBoxCellDataSource>

设置数据

@property (nonatomic,strong) NSArray* comboBoxCellData;
// ...
self.comboBoxCellData = @[@"text",@"textarea",@"password",@"datetime",@"hidden"];

并实现以下接口,两个啊

#pragma mark -
#pragma mark ***** 表格下拉框的数据源 *****

//  填充下拉框数据大小
-(NSInteger)numberOfItemsInComboBoxCell:(NSComboBoxCell *)comboBoxCell{
    return [self.comboBoxCellData count];
}

//  获取下拉框数据
-(id)comboBoxCell:(NSComboBoxCell *)comboBoxCell objectValueForItemAtIndex:(NSInteger)index{
    return [self.comboBoxCellData objectAtIndex:index];
}

然后就OK了

其他


如你所见我成功的设置了,很逼性是吧!当然了这个工具自己用啊

废话不多说~当然了,愿意用哪种都行,哈哈操

添加新评论