Objective c 如何以编程方式启动NSTextFieldCell编辑(使其成为第一响应者)
我有两个Objective c 如何以编程方式启动NSTextFieldCell编辑(使其成为第一响应者),objective-c,cocoa,nstableview,nstableviewcell,Objective C,Cocoa,Nstableview,Nstableviewcell,我有两个NSTableViews。双击tableview1时,tableview1的内容将放置在tableview2中。我想在表视图2中编辑新单元格。尝试了以下方法 -(void)editColumn:(NSInteger)column index row:(NSInteger)row index with event:(NSEvent*)事件选择:(BOOL)标志 这不会使tableview2成为第一响应者。光标不在新单元格中。我想将光标放在新单元格中,然后开始编辑单元格。请给我一些完成这项工
NSTableView
s。双击tableview1
时,tableview1
的内容将放置在tableview2
中。我想在表视图2中编辑新单元格。
尝试了以下方法
-(void)editColumn:(NSInteger)column index row:(NSInteger)row index with event:(NSEvent*)事件选择:(BOOL)标志
这不会使tableview2
成为第一响应者。光标不在新单元格中。我想将光标放在新单元格中,然后开始编辑单元格。请给我一些完成这项工作的建议。提前谢谢
如何将光标置于NSTableView的单元格中?编辑开始时,
字段编辑器
出现在图片中,这就是为什么无法设置第一响应程序的原因
实现了tableView的textdidediting
委托。它解决了问题。如果您使用NSArrayController
保存表的数据,您可以覆盖对象:
- (void)rearrangeObjects {
[super rearrangeObjects];
[tableView editColumn:0 row:[self selectionIndex] withEvent:nil select:YES];
}
另一个优点是,此方法似乎还可以将表向下滚动到新插入的行。当然,在上面的示例中,tableView
在阵列控制器的界面中声明为IBOutlet。在Interface Builder中拖动阵列控制器,将其类设置为NSArrayController
的子类,然后按ctrl键从阵列控制器拖动到表视图以连接插座。