gpt4 book ai didi

cocoa - 将可编辑的 NSTextFieldCell 添加到我的 NSTableView

转载 作者:行者123 更新时间:2023-12-03 16:33:15 27 4
gpt4 key购买 nike

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

通常,我会创建自己的 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];

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

最佳答案

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

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

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

尝试在设置 TableView 时创建单个单元格并将自定义单元格设置为右表列使用此:

- (void)setDataCell:(NSCell *)aCell

或者,您可以子类化 NSTextFieldCell 并在那里进行自定义,然后在界面构建器中设置列的单元格类(如果您处于前沿,则设置 XCode 4!)

关于cocoa - 将可编辑的 NSTextFieldCell 添加到我的 NSTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026393/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com