Вопрос

Как я могу изменить цвет ячейки в моем NStableView?

Это было полезно?

Решение

Попробуйте использовать пользовательский NSView для этого или NSTableViewС. -setBackgroundColor: метод.

Другие советы

В твоем NSTableViewDelegate для NSTableView, внедрить этот метод:

- (void)tableView:(NSTableView *)tableView 
  willDisplayCell:(id)cell 
   forTableColumn:(NSTableColumn *)tableColumn 
              row:(NSInteger)row

То NSTableView Звонит это на своем делегате перед отображением каждой ячейки, чтобы вы могли повлиять на его внешний вид. Предполагая, что вы используете NStextFieldCells, для клетки, которую вы хотите изменить звонок:

[cell setBackgroundColor:...];

Или, если вы хотите изменить цвет текста:

[cell setTextColor:...];

Если вы хотите, чтобы столбцы были разные внешности, или если все столбцы не являются NStextFieldCells, используйте [tableColumn identifier] Чтобы определить столбец. Вы можете установить идентификатор в интерфейсе Builder, выбрав столбец таблицы.

// Испытано - Swift 3 Решение ... Для изменения цвета текста ячейки в одном столбце. Все столбцы в моей табличном представлении имеют уникальный идентификатор

    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {

        let myCell:NSTableCellView = tableView.make(withIdentifier: (tableColumn?.identifier)!, owner: self) as! NSTableCellView
        if tableColumn?.identifier == "MyColumn" {
            let results = arrayController.arrangedObjects as! [ProjectData]
            let result = results[row]
            if result.ebit < 0.0 {
                myCell.textField?.textColor = NSColor.red
            } else {
                myCell.textField?.textColor = NSColor.black
            }
        }
        return myCell
    }
//for VIEW based TableViews using Objective C
//in your NSTableViewDelegate, implement the following
//this customization makes the column numbers red if negative.
- (NSView *)tableView:(NSTableView *)inTableView
   viewForTableColumn:(NSTableColumn *)tableColumn
                  row:(NSInteger)row
{
    NSTableCellView *result = nil;
    if ([tableColumn.title isEqualToString: @"Amount"]) {
        //pick one of the following methods to identify the NSTableCellView
        //in .xib file creation, leave identifier "blank" (default)
         result = [inTableView makeViewWithIdentifier:[tableColumn identifier] owner:self];
        //or set the Amount column's NSTableCellView's identifier to "Amount"
        result = [inTableView makeViewWithIdentifier:@"Amount" owner:self];
        id aRecord = [[arrayController arrangedObjects] objectAtIndex:row];
        //test the relevant field's value
        if ( aRecord.amount < 0.0 )
            [[result textField] setTextColor:[NSColor colorWithSRGBRed:1.0 green:0.0 blue:0.0 alpha:1.0]];
    } else {
        //allow the defaults to handle the rest of the columns
        result = [inTableView makeViewWithIdentifier:[tableColumn identifier] owner:self];
    }
    return result;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top