Вы можете достичь того же результата, не используя подклассы NSTableView
, используя NSNotificationCenter
или методы NSControl
. См. Документацию Apple здесь:
http://developer.apple.com/library/mac/#qa/qa1551/_index.html
Это всего лишь пара строк кода и отлично сработало для меня.
Если вы можете быть delegate
из NSTableView
, вам просто нужно реализовать метод
- (void)controlTextDidEndEditing:(NSNotification *)obj { ... }
Фактически, NSTableView
- это delegate
из NSControl
элементов, которые он содержит, и перенаправляет эти вызовы методов на его delegate
(есть и другие полезные методы)
В противном случае используйте NSNotificationCenter
:
// where you instantiate the table view
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editingDidEnd:)
name:NSControlTextDidEndEditingNotification object:nil];
// somewhere else in the .m file
- (void)editingDidEnd:(NSNotification *)notification { ... }
// remove the observer in the dealloc
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self
name:NSControlTextDidEndEditingNotification object:nil];
[super dealloc]
}