如何更改NSTableView中单元格的颜色?
答案 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)
尝试使用自定义NSView
或NSTableView
的{{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"))