objective-c – NSTextFieldCell代表?
我在表格视图中有一个文本字段单元格,从这个单元格结束编辑时,我需要这样做.我以为我将我的Controller类作为文本字段单元的委托,然后使用NSTextField的委托方法textDidEndEditing :,但是意识到文本字段单元格似乎没有委托方法?为什么这样,编辑完成后可以做什么(除了子类别)通知?
谢谢 解决方法
NSTextFieldCell继承自NSCell(从技术上讲,它继承自NSCell的NSActionCell). NSCell类用于(从
docs):
值得注意的是,单元格类用于“显示文本或图像”,而不是处理与用户的交互.同样,使用NSTextField类:
NSTextField处理实际的用户输入,同时使用文本字段单元简单地实现其用户界面,类似地,当文本编辑结束时提供通知的委托方法通过NSTextField类提供,而不是通过NSTextFieldCell类. 如果您希望在NSTableView中编辑结束时收到通知,那么您需要注册自己作为NSTextDidEndEditingNotification的观察者(如果您不熟悉通知,您可能需要阅读NSNotificationCenter类引用).为此,请在控制器类中放置以下内容: awakeFromNib函数是包含它的一个好地方,以确保在应用程序的启动时调用它: NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(textDidEndEditing:) name:NSTextDidEndEditingNotification object:tableView]; 其中tableView是指向您的NSTableView对象的指针.然后,简单地实现方法如下: - (void)textDidEndEditing:(NSNotification *)aNotification { // Do what you want here } 不要忘记在释放时作为观察员移除自己: - (void)dealloc { NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc removeObserver:self]; } 您将要观察的对象设置为NSTableView实例(而不是单元格本身)的原因在于,在编辑表格中的单元格时,您正在处理的单元格未被编辑直;它是窗口(或自定义)字段编辑器.当编辑结束时,字段编辑器然后将该单元格的新值传递给表视图.但是,表视图将发布一条通知,表示单元格已被完成编辑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |