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

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

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

- (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 ответ

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

Другие вопросы по тегам