2013-10-02 2 views
0

Я изменяю исходные данные NSTableView, непосредственно выбирая ячейки (NSTextFieldCell) и редактируя текст в нем.Редактирование ячейки NSTableView: где выполнять операции после редактирования?

Мне нужно выполнить некоторые операции над ячейкой до и после редактирования ячейки. я выполнять такие операции до редактирования в:

- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 

Но где я могу выполнять операции редактирования размещать?

Благодаря

ответ

1

Пусть поиск Google для 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;

4

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/index.html#//apple_ref/occ/intfm/NSTableViewDataSource/tableView:setObjectValue:forTableColumn:row:

- (void)tableView:(NSTableView *)aTableView 
    setObjectValue:(id)anObject 
    forTableColumn:(NSTableColumn *)aTableColumn 
       row:(NSInteger)rowIndex 

Цитируется: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/TableView/PopulatingCellTables/PopulatingCellTables.html

Для вашего приложения для редактирования содержимого в NSCell основе представления таблицы, вы реализовать Tableview: setObjectValue: forTableColumn: строка: источник данных протокол метод. Этот метод похож на tableView: objectValueForTableColumn: строка :, который предоставляет данные для вида таблицы, но вместо того, чтобы запросить вернуть значение для указанной строки и столбца, оно предоставляет новое значение для этой строки и ячейка

Смежные вопросы