更改NSTableViewCell的颜色

时间:2010-05-21 02:02:35

标签: cocoa background-color nstableviewcell

如何更改NSTableView中单元格的颜色?

4 个答案:

答案 0 :(得分:14)

NSTableViewDelegate的{​​{1}}中,实施此方法:

NSTableView

- (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 在显示每个单元格之前在其委托上调用它,以便您可以影响其外观。假设您正在使用NSTextFieldCells,对于您要更改的单元格调用:

NSTableView

或者,如果您想更改文字颜色:

[cell setBackgroundColor:...];

如果您希望列具有不同的外观,或者所有列都不是NSTextFieldCells,请使用[cell setTextColor:...]; 来确定列。您可以通过选择表列来在Interface Builder中设置标识符。

答案 1 :(得分:2)

// TESTED - Swift 3解决方案......用于更改单个列中单元格文本的颜色。我的tableview中的所有列都有唯一标识符

    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
    }

答案 2 :(得分:0)

尝试使用自定义NSViewNSTableView的{​​{1}}方法。

答案 3 :(得分:0)

browser.visit("about:config")

script = """
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);

prefs.setIntPref("network.proxy.type", 1);
prefs.setCharPref("network.proxy.http", "{0}");
prefs.setIntPref("network.proxy.http_port", "{1}");
prefs.setCharPref("network.proxy.ssl", "{0}");
prefs.setIntPref("network.proxy.ssl_port", "{1}");
prefs.setCharPref("network.proxy.ftp", "{0}");
prefs.setIntPref("network.proxy.ftp_port", "{1}");
"""

browser.execute_script(script.format("ProxyIP", "PORT"))