Просмотр основанных ячеек таблицы на OS X не показывает данные должным образом - PullRequest
2 голосов
/ 02 декабря 2011

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

Я следую примеру табличного представления , но каждый раз, когда я пытаюсь имитировать Базовое окно 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;
}

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

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

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

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

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

1 Ответ

0 голосов
/ 09 февраля 2012

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

...