Просмотр ячеек таблицы на основе OS X не отображает данные должным образом

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

Я следую площадке табличного представления пример, но каждый раз, когда я пытаюсь имитировать базовое окно TableView, первая строка становится высотой количества добавленных строк (по крайней мере, так это выглядит. Вот мой код:

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
{
    NSString *identifier = [tableColumn identifier];
    if ([identifier isEqualToString:@"filename"]) {
        // We pass us as the owner so we can setup target/actions into this main controller object
        NSTableCellView *cellView = [fileBrowserTable makeViewWithIdentifier:identifier owner:self];
        // Then setup properties on the cellView based on the column
        cellView.textField.stringValue = [fileList filenameAtIndex:row];
        cellView.imageView.objectValue = [[NSWorkspace sharedWorkspace] iconForFile:[fileList fullPathAtIndex:row]];
        return cellView;
    }
    else if ([identifier isEqualToString:@"path"]) {
        NSTextField *textField = [fileBrowserTable makeViewWithIdentifier:identifier owner:self];
        textField.objectValue = [fileList pathAtIndex:row];
        return textField;
    }
    else if ([identifier isEqualToString:@"preview"]) {
        NSTextField *textField = [fileBrowserTable makeViewWithIdentifier:identifier owner:self];
        textField.objectValue = [fileList previewAtIndex:row];
        return textField;
    }
    return nil;
}

Я думаю, стоит упомянуть, что при использовании ячейки текстового поля старой школы у меня нет проблем с отображением данных (конечно, приведенный выше код в этом случае отличается), поэтому я уверен, что это не проблема с моей структурой данных, которая содержит значения . Я также установил правильный делегат и источник данных

Ячейка, использующая идентификатор «имя файла», использует «ячейку представления изображения и текстовой таблицы», в то время как другие используют только «представление ячейки текстовой таблицы». Ни один из них не работает, поэтому я предполагаю, что что-то не так с тем, как я настроил свой стол. Но при сравнении моей таблицы с таблицей в примере это просто плевок (без идентификаторов имен файлов).

Одна вещь, которую я заметил, что я не могу понять, это то, что пример говорит:

NSTableView имеет две ассоциации идентификатора повторного использования: «MainCell» и «SizeCell» связаны с пером ATBasicTableViewCells.xib.

Я не очень понимаю это утверждение. Однако, как говорится, пример не содержит ATBasicTableViewCells.xib и не имеет с ним никаких ассоциаций (код или ib), которые я могу найти.


person Kubee    schedule 02.12.2011    source источник


Ответы (1)


Вы пытались установить для rowSizeStyle NSTableView значение NSTableViewRowSizeStyleCustom? [ОБНОВЛЕНИЕ] Перечитывая ваш вопрос, мне не ясно, в чем ваша проблема. Решение, которое я дал, связано с проблемами с размером каждой ячейки, который не принимается во внимание, если для rowSizeStyle не установлено значение custom.

person FKDev    schedule 08.02.2012