NSArrayController заполняет NSTableView, но не устанавливает заголовок ячейки

У меня есть NSTableView с двумя столбцами, который я хочу заполнить записями, полученными из файла CSV. Все работает нормально, за исключением того, что заголовок каждой из ячеек таблицы не установлен.

Вот функция, которая вызывается для каждой строки в NSArray

- (void)populateTable:(NSString *)fname :(NSString *)lname {
    NSMutableDictionary *value = [[NSMutableDictionary alloc] init];
    [value setObject:[NSString stringWithFormat:@"%@", fname] forKey:@"first_name"];
    [value setObject:[NSString stringWithFormat:@"%@", lname] forKey:@"last_name"];

    [arrayController addObject:value];
    [value release];
    [fname_list reloadData];
    [lname_list reloadData];
}

Значение столбца «фамилия» привязано к контроллеру массива arrangedObjects.last_name, а «имя» и «фамилия» указаны как ключи в разделе Контроллер массива > Контроллер объектов > Ключи. список

Создается нужное количество ячеек таблицы (3 записи в файле CSV = 3 строки в каждом столбце), но заголовок каждой из ячеек не задан (либо «first_name», либо «last_name» в зависимости от столбца) ; заголовок ячеек просто остается «Ячейка представления таблицы»

Изменить:

После использования изменений navinsillu я получаю следующую функцию:

- (void)populateTable:(id)sender :(NSString *)fname :(NSString *)lname {
    [arrayController insert:sender];
    [[[self arrayController] selection] setValue:fname forKeyPath:@"first_name"];
    [[[self arrayController] selection] setValue:lname forKeyPath:@"last_name"];

    [fname_list reloadData];
    [lname_list reloadData];
}

А у меня в шапке

@property (retain,nonatomic,readwrite) IBOutlet NSArrayController *arrayController;

Но я все равно получаю те же результаты: 3 строки/ячейки в каждом столбце таблицы, все под названием «Ячейка представления таблицы».

Изменить:

После некоторой проверки я заметил, что Model Key Path под привязкой Value для столбцов таблицы не имеет записей. Когда я ввожу first_name или last_name, появляется сообщение Завершения не найдены, хотя ключи перечислены в списке Keys в контроллере массива. К сожалению, я понятия не имею, почему он не находит ключи.

Изменить:

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


person Steven Hiller    schedule 23.10.2012    source источник
comment
покажите код, где вы создаете ячейку.   -  person Manish Agrawal    schedule 23.10.2012
comment
Это код выше. Контроллеру массива, привязанному к столбцам NSTableView, предлагается добавить объект с ключами-идентификаторами. Он делает это просто отлично, но вместо того, чтобы получать столбец «Фамилия» с такими результатами, как Смит, Джонсон и Стивенсон, я получаю ячейку представления таблицы, ячейку представления таблицы и ячейку представления таблицы.   -  person Steven Hiller    schedule 23.10.2012
comment
этот код будет устанавливать только массив, мне нужен код этого метода - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath   -  person Manish Agrawal    schedule 23.10.2012
comment
У меня нет ничего для этого. Контроллер массива добавляет данные в populateTable, а табличное представление перезагружается данными из контроллера массива.   -  person Steven Hiller    schedule 23.10.2012
comment
Это таблица на основе представления или ячейки?   -  person rdelmar    schedule 23.10.2012


Ответы (2)


Вы можете установить свой заголовок в заголовке таблицы в Interface Builder. Вы можете дважды щелкнуть заголовок столбца таблицы и установить для него заголовок. «Вот

person NewStack    schedule 23.10.2012
comment
О нет, у меня есть этот набор и все такое. Я загружаю CSV-файл при запуске приложения, и для каждой строки в CSV-файле создается ячейка в столбце таблицы. Предполагается, что заголовок ячейки (по умолчанию — ячейка представления таблицы) соответствует данным из файла CSV, но это не так. Когда я делаю NSLog объекта value, он показывает правильные данные, но заголовок каждой из ячеек таблицы не изменяется. Я пока не могу использовать здесь изображения, но я имею в виду следующее: i.imgur.com/4VFrq.png - person Steven Hiller; 23.10.2012
comment
хорошо, вы можете использовать @property (retain,nonatomic,readwrite) IBOutlet NSArrayController *arraycontroller;, затем [[[self arraycontroller] selection] setValue:fname forKeyPath:@"frist_name"]; [[[self arraycontroller] selection] setValue:lnameforKeyPath:@"last_name"]; - person NewStack; 24.10.2012
comment
Я только что попробовал применить ваши изменения, но все равно получаю тот же результат - person Steven Hiller; 24.10.2012

Воссоздание проекта точно так же, как у меня, дает то, что я ожидал. Я не уверен, почему переделывание всего этого сработало, но это сработало.

person Steven Hiller    schedule 25.10.2012