gpt4 book ai didi

objective-c - 编辑时更改 NSTableView 单元格值

转载 作者:行者123 更新时间:2023-12-03 16:35:38 26 4
gpt4 key购买 nike

我想在编辑时更改 NSTableView 单元格中显示的值。我的要求如下:最初我输入了一个单元格值 234.5678978,编辑后该值被四舍五入到 0 小数精度(这意味着 235)。我的要求是,当我单击该单元格时,它应该显示特定小数精度的值(例如 5 精度,在本例中为 234.56790)。我怎样才能实现这个功能。我 try catch 双击编辑 NSTableView 单元格的 Action :

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editingDidEnd:)
name:NSControlTextDidEndEditingNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editingDidBegin:)
name:NSControlTextDidBeginEditingNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editingDidChange:)
name:NSControlTextDidChangeNotification object:nil];

- (void)editingDidEnd:(NSNotification *)notification
{
NSLog(@"text editing fisnished");
}

- (void)editingDidBegin:(NSNotification *)notification
{
NSLog(@"text is being edited");
}
- (void)editingDidChange:(NSNotification *)notification
{
NSLog(@"text was being changed");
}

但只有 editingDidEnd 在选项卡上被调用,而其他两个方法从未被调用。

最佳答案

我在 NSTableViewwillDisplayCell 委托(delegate)中为编辑的单元格添加了自定义格式化程序

- (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
if(tableView == self.tableView)
{
if(![[tableColumn identifier]isEqualToString:@"name"]){
[cell setFormatter:nil];

if (row == [tableView editedRow] && [[tableView tableColumns] indexOfObject:tableColumn] == [tableView editedColumn]) // the cell is getting edited
{
[(NSTextFieldCell*)cell setTextColor:[NSColor redColor]];
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setMaximumFractionDigits:5]; // Setting the precision value upto 5 decimal places
[nf setMinimumFractionDigits:0];
[cell setFormatter:nf];
}
else{
[(NSTextFieldCell*)cell setTextColor:[NSColor blackColor]];
//[cell setFormatter:nil];
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setMaximumFractionDigits:2]; // setting decimal value upto 2 decimal places
[nf setMinimumFractionDigits:0];
[cell setFormatter:nf];
}
}

}
}

因此,当编辑单元格时,它会将精度设置为小数点后 5 位,而在所有其他情况下,它将单元格格式化程序设置为小数点后 2 位。

关于objective-c - 编辑时更改 NSTableView 单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26468127/

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