use*_*064 2 cocoa objective-c nstableview nsbutton
如何在NSTableView中设置一列复选框?到目前为止,这就是我所做的,但它只是将int 1放在列中,而不是复选框:
-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row {
if ([[tableColumn identifier] isEqualToString:@"Enable"]) {
NSButtonCell *cell=[[[NSButtonCell alloc] init] autorelease];
[cell setAllowsMixedState:YES];
[cell setButtonType:NSSwitchButton];
NSCell *aCell = [tableColumn dataCellForRow:row];
[aCell setObjectValue:cell];
return [NSNumber numberWithInt:1];
}
return [[data objectAtIndex:row+1] objectAtIndex:[[data objectAtIndex:0] indexOfObject:[tableColumn identifier]]];
}
Run Code Online (Sandbox Code Playgroud)
joh*_*ope 10
您需要使用dataCellForTableColumn委托方法.
- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
if([[tableColumn identifier] isEqualTo:@"delete"]){
NSButtonCell *cell = [[[NSButtonCell alloc] init] autorelease];
[cell setAllowsMixedState:YES];
[(NSButtonCell *)cell setButtonType:NSSwitchButton];
[cell setTitle:@""];
return cell;
}else {
NSCell *cell = [tableColumn dataCell];
return cell;
}
}
Run Code Online (Sandbox Code Playgroud)
在Interface Builder中,将复选框单元格拖到表列.这将设置列的数据单元格.在Inspector中设置您想要的单元格.然后删除你在这里作用于单元格的所有代码,然后返回NSNumber.
为了满足您以编程方式执行此操作的愿望:Interface Builder真的是这里的方式.它专为布局GUI对象而设计.不过,我会告诉你怎么做.
首先,要求setObjectValue:上NSCell与其他NSCell的参数不第一变成第二,或改变指针值或类似的东西.该setObjectValue:方法更改objectValue单元格 - 实质上是它显示为文本的对象.
如果要以编程方式为表列提供单元格,则需要-[NSTableColumn setDataCell:]使用所需的NSCell某个位置调用(awakeFromNib可能是一个不错的选择),但要注意,表列会为每一行重用相同的单元格实例,并且只是在绘制之前修改它以便正确显示.没有办法为列中的每一行设置不同的单元格,UPDATE:没有子类化NSTableColumn.
| 归档时间: |
|
| 查看次数: |
5754 次 |
| 最近记录: |