У меня есть NSTableView
с одним столбцом NSTableCellView
, который, скажем, имеет значок, имя и необязательную дату.
Когда вы редактируете строку, я хочу заменить весь вид напростой NSTextField
, и я сделаю некоторый анализ этого текста и извлеку эту необязательную дату, если она есть.
Мой вопрос: как бы вы реализовали этот механизм редактирования?
Я пыталсявозвращает другое представление в tableView:viewForTableColumn:row
, что-то вроде:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
BOOL isSelected = [tableView isRowSelected:row];
if (isSelected)
{
NSView *view = [tableView makeViewWithIdentifier:@"editor" owner:self];
....snip....
return view;
}
else
{
TaskView *view = [tableView makeViewWithIdentifier:@"view" owner:self];
....snip....
return view;
}
}
, а затем, когда изменяется выбранная строка, пытается запросить обновление этой строки.
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
{
NSTableView *table = [aNotification object];
NSUInteger rowIndex = [table selectedRow];
[table reloadDataForRowIndexes:[NSIndexSet indexSetWithIndex:rowIndex]
columnIndexes:[NSIndexSet indexSetWithIndex:0]];
}
Это нене совсем работает, и код кажется немного грязным.Должно быть, это лучший способ сделать это, и я не могу найти его в документации или в Интернете.