【问题标题】:How can I add subclass to NSTableCellView?如何将子类添加到 NSTableCellView?
【发布时间】:2015-04-27 16:16:52
【问题描述】:

我在 IB 中向 NSTable 添加了一个图像和文本表格单元格视图。 Text Table Cell View中有一个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; 
}

我发现 textfield 和 imageView 有默认出口,所以我可以使用 cell.textFiled 访问这个 textField 对象并更改它的值。这是我的问题,如果我在这个图像和文本表格单元格视图中添加一个额外的 TextField,那么一列中有两个 TextField,那么我怎样才能获得我添加的第二个 TextFiled,更改 TextFiled 的值?

【问题讨论】:

    标签: macos cocoa nstableview nstablecolumn nstablecellview


    【解决方案1】:

    正如它在NSTableCellView Class Reference 页面上所说的那样

    可以通过继承 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; 
    }
    

    【讨论】:

    • 感谢您的回答!你能告诉我如何在界面生成器中找到我的 NSTableCellView 子类吗?
    • 非常感谢,我拿到钥匙了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 2022-01-05
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    相关资源
    最近更新 更多