Per*_*Pon 4 macos cocoa nstableview nstablecolumn nstablecellview
我将图像和文本表单元格视图添加到 IB 中的 NSTable。文本表格单元格视图中有一个 TextFiled 和一个 ImageView,所以我的代码如下所示:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSString *iden = [ tableColumn identifier ];
if ([iden isEqualToString:@"MainCell"]) {
NSTableCellView *cell = [ tableView makeViewWithIdentifier:@"MainCell11" owner:self ];
[cell.textField setStringValue:@"123"];
[cell.imageView setImage:[[NSImage alloc] initByReferencingFile:@"/Users/Pon/Pictures/17880.jpg"]];
return cell;
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
我发现textfield和imageView有默认的outlet,所以我可以使用cell.textFiled来访问这个textField对象并更改它的值。这是我的问题,如果我向此图像和文本表单元格视图添加一个额外的 TextField,一列中有两个 TextField,那么如何获取我添加的第二个 TextFiled,更改 TextFiled 的值?
可以通过子类化 NSTableCellView 并添加所需的属性并以编程方式或在 Interface Builder 中连接它们来添加其他属性。
创建 NSTableCellView 子类(例如“CustomTableCellView”),定义一个附加文本字段出口属性(图像视图和第一个文本字段在超类中定义)。在 Interface Builder 中设置单元原型的类,并将附加文本字段控件连接到您的属性。
在您的 NSTableViewDelegate 类中:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSString *iden = [ tableColumn identifier ];
if ([iden isEqualToString:@"MainCell"]) {
CustomTableCellView *cell = [ tableView makeViewWithIdentifier:@"MainCell11" owner:nil ]; // use custom cell view class
[cell.textField setStringValue:@"123"];
[cell.imageView setImage:[[NSImage alloc] initByReferencingFile:@"/Users/Pon/Pictures/17880.jpg"]];
[cell.addinitionalField setStringValue:@"321"]; // that is all
return cell;
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2768 次 |
| 最近记录: |