Использование другого вида в режиме редактирования в NSTableView на основе вида - PullRequest
3 голосов
/ 16 февраля 2012

У меня есть 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]];

}

Это нене совсем работает, и код кажется немного грязным.Должно быть, это лучший способ сделать это, и я не могу найти его в документации или в Интернете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...