gpt4 book ai didi

objective-c - NSTableView 在失去焦点时无需按 Enter 键即可保存值

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

the below pic shows my app

“第一个数字”乘以“第二个数字”得到“小计”。按“总计”按钮给出“小计”的总和

如图所示,包含数字“5”的单元格处于可编辑状态。当我单击“总计”按钮时,会触发一个方法,该方法将“小计”列中的数字相加。我希望在执行添加之前自动保存处于可编辑状态的数字,以便正确答案为 156.00,而不是“总计”按钮下面的标签中所示的 136.00

最佳答案

记忆一下 MVC 设计模式

您的NSTableView只是一个 View ,您可以在其上显示模型(数组)。

因此,您更改了 View 部分中的值,但您的模型并未更改。您需要更改模型,即数组或在表格 View 中显示的任何集合。

在按钮操作中只需调用[tableView reloadData],然后- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn行:(NSInteger)行
:tablview 的委托(delegate)方法将被调用,并且您的模型将被更新。生成您键入的数据。

检查示例:

- (id)init
{
self = [super init];
if (self) {
self.array=[NSMutableArray new];

for (NSInteger i=0; i<30; i++) {
[self.dict setObject:[NSString stringWithFormat:@"Obj %ld",i] forKey:[NSString stringWithFormat:@"%ld",i]];
self.array[i]=@(i);
}
}
return self;
}

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{
return self.array.count;
}

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
return self.array[row];
}


- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
self.array[row]=object;

}

您的答案在这里:

- (IBAction)button:(id)sender {

[self.myTable reloadData];

NSInteger row=[self.myTable selectedRow];
NSLog(@"%@",[self.array objectAtIndex:row]);

}

关于objective-c - NSTableView 在失去焦点时无需按 Enter 键即可保存值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15319922/

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