开发者

Coloring NSTableView Text per row

开发者 https://www.devze.com 2022-12-29 05:36 出处:网络
I have a NSTableView that is displaying an array of objects I have. For each of these objects (row开发者_开发问答s) I would like to change the color of the text displayed depending on the results of a

I have a NSTableView that is displaying an array of objects I have. For each of these objects (row开发者_开发问答s) I would like to change the color of the text displayed depending on the results of a function I run on each object;

So for example all the object in the table that exist in another list (or some other requirement) I want to display them in green text, and objects that don't exist display in red.

How would I go about doing this?


Assuming that you have NSTextFieldCell in your table (for other cells, setting text color may vary), you can achieve this by implementing a NSTableView's delegate method.

First, you have to define a delegate for the NSTableView, either in Interface Builder or in your code. This can be your application controller for example.

Then, just implement the following method:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
    NSTextFieldCell *cell = aCell;
    if (...) {
        [cell setTextColor:[NSColor greenColor]];
    } else if (...) {
        [cell setTextColor:[NSColor redColor]];
    } else {
        [cell setTextColor:[NSColor blackColor]];
    }
}

Each time the NSTableView will draw a cell, you have the opportunity to modify it before it get drawn.

Check out the NSTableViewDelegate documentation page for more details.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号