gpt4 book ai didi

objective-c - 从 NSTableView 中删除列及其标题

转载 作者:行者123 更新时间:2023-12-03 17:42:05 25 4
gpt4 key购买 nike

NOTE: Andrew's response caused me to take yet another look. This feature is buried deep in a large application which has in internal timer. If that timer is off I get the wrong behavior described here. If the timer is on things work as expected. I don't know why that timer interacts with this table view, but, as I said, it's a large, complex app.

我希望用户能够选择要显示的列。他将看到一组单选按钮或复选框,一个对应于所显示对象中的每个键。他可以选中或取消选中某个框,NSTableView 将为该键添加或删除一列。

显示的对象是一个 NSDictionary。字典的键直到运行时才知道,所以我必须在运行时创建带有标识符的列......它们在编译时是不知道的。

添加功能的实现很顺利。我创建一个列和一个标题单元格,将标题单元格的文本设置为某个值。但删除并不是那么容易。 [myTableView removeTableColumn:col] 删除列,但不能很好地处理标题。有时标题文本不会被删除。有时,两列中的标题文本会被删除。有时我最终会打印两个标题文本字符串。

显然我错过了一些东西。如何以编程方式删除列及其标题?

最佳答案

通过从复选框选择器调用这两个方法可以轻松实现。

要动态添加列,您应该这样调用:

- (void)addColumnWithCheckboxToTable:(NSTableView *)table :(NSString *)header
{
NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:header];
[[column headerCell] setStringValue:header];

// Add column to table
[table addTableColumn:column];
}

要删除列,请调用以下命令:

- (void)removeColumnWithCheckboxFromTable:(NSTableView *)table :(NSString *)header
{
NSTableColumn *column = [table.tableColumns objectAtIndex:[table columnWithIdentifier:header]];
[table removeTableColumn: column];
}

关于objective-c - 从 NSTableView 中删除列及其标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10462063/

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