2016-10-11 2 views
0

Я использую NSTableView в моем OSX применения:NSTableView текст_ячейка не изменилась

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { 
    if (tableView == self.categoryTable) { 
     return [[[AppAPI shared] categoryArr] count]; 
    } 
    return 0; 
} 

- (nullable id)tableView:(NSTableView *)tableView objectValueForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row { 
    if (tableView == self.categoryTable) { 
     NSTableCellView *cellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self]; 

     CategoryItem * cat = [[AppAPI shared] categoryArr][row]; 

     cellView.textField.stringValue = cat.name; 

     return cellView; 
    } 

    return nil; 
} 

Я использую этот код для вставки данных в таблицу, но все, что я получаю строки с этим текстом: enter image description here

cellView не ноль

Любая идея, почему это происходит?

+0

Откуда взята ячейка Table View? IB? – Antzi

ответ

1

Вы используете неправильные методы источника делегата/данные

objectValueForTableColumn:row должен возвращать объект для строки

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { 
    return [[AppAPI shared] categoryArr][row]; 
} 

viewForTableColumn:row: возвращает вид.

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { 
    return [tableView makeViewWithIdentifier:tableColumn.identifier owner:self]; 
} 

PS: Сколько табличных видов в вашем дизайне вам необходимо проверить на правильное?

Смежные вопросы