我通过直接选择单元格(NSTableView
)并编辑其中的文本来修改NSTextFieldCell
的源数据。
我需要在编辑单元格之前和之后对单元格执行一些操作。 我在编辑之前执行此类操作:
- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
但是我可以在哪里进行编辑后的操作?
由于
答案 0 :(得分:5)
- (void)tableView:(NSTableView *)aTableView
setObjectValue:(id)anObject
forTableColumn:(NSTableColumn *)aTableColumn
row:(NSInteger)rowIndex
要让您的应用编辑基于NSCell的表格视图的内容,您就可以了 实现tableView:setObjectValue:forTableColumn:row:数据源 协议方法。这种方法类似于 tableView:objectValueForTableColumn:row:,提供数据 表视图,而不是请求您返回值 指定的行和列,它为该行提供新值 和细胞
答案 1 :(得分:1)
让谷歌搜索 nstableview编辑更改,您将获得大量详细答案。
简而言之:使用(某些)以下(和类似的)委托方法:
- (void)controlTextDidEndEditing:(NSNotification *)obj
- (void)controlTextDidChange:(NSNotification *)aNotification
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor
并测试它们以显示适合您的应用的内容:
- (void)controlTextDidEndEditing:(NSNotification *)obj
{
NSDictionary *userInfo = [obj userInfo];
NSTextView *aView = [userInfo valueForKey:@"NSFieldEditor"];
NSLog(@"controlTextDidEndEditing %@", [aView string] );
}
- (void)controlTextDidChange:(NSNotification *)aNotification
{
NSDictionary *userInfo = [aNotification userInfo];
NSTextView *aView = [userInfo valueForKey:@"NSFieldEditor"];
NSLog(@"controlTextDidChange >>%@<<", [aView string] );
}
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor
{
NSLog(@"control: textShouldEndEditing >%@<", [fieldEditor string] );
return YES;
}
您可以这样做,因为NSTableView
的单元格是NSTextFieldCell
s;