【问题标题】:Adding an editable NSTextFieldCell to my NSTableView将可编辑的 NSTextFieldCell 添加到我的 NSTableView
【发布时间】:2011-05-17 04:53:38
【问题描述】:

我有一个 NSTableView,它显示了一些代表我的自定义对象的信息。我没有使用绑定。

通常,我会创建自己的 NSCell 来显示数据,但有一次我会使用 NSTextFieldCell 来显示对象的字符串值,并让用户对其进行编辑。

我可以使用下面的代码成功添加 NSTextFieldCell,但它不可编辑。

NSTextFieldCell *textField = [[NSTextFieldCell alloc] init];
[textField setFont:[NSFont fontWithName:@"Helvetica Bold" size:13]];
[textField setTextColor:[NSColor colorWithDeviceRed:0.1058823529 green:0.2117647059 blue:0.3294117647 alpha:1.0]];
[textField setStringValue:projectName];
[textField setEditable:YES];
[textField setBordered:NO];

[textField drawWithFrame:textRect inView:controlView];
[textField release];

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: cocoa nstableview nstextfieldcell


    【解决方案1】:

    NSTextFieldCell 是用享元模式实现的(我在“Cocoa 设计模式”一书中读到过),每一列只有一个单元格实例。当您在界面生成器中编辑它时,您可以看到某种证据。当您单击以编辑 NSTableView 时,该单元格的单个实例将从之前的位置跳入并为您处理编辑。

    正如您所说,这样做适用于单元格的视觉外观(绘图),也适用于 NSTextField,因为每个 NSTextField 必须在每个视图中只有一个单元格,因此当您想要编辑它。

    但是在这种情况下,您要创建一个单元格,绘制它,然后通过在代码末尾释放它来将其从内存中踢出。那么,当您尝试编辑它时,您如何期望这个已设​​置为可编辑的单元格存在呢?它已经不存在了。

    尝试在设置表格视图时创建单个单元格并将您的自定义单元格设置为 右表列使用这个:

    - (void)setDataCell:(NSCell *)aCell
    

    或者,您可以继承 NSTextFieldCell 并在那里进行自定义,并在界面生成器中为列设置单元类(如果您处于最前沿,则为 XCode 4!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      相关资源
      最近更新 更多