NSTable DidAddRowView 和交替背景颜色
NSTable DidAddRowView and Alternating Background Colors
也许有人可以帮我解决这个问题。我一直在努力创建一个具有交替背景颜色的行的 NSTable,并决定使用代码(显然被截断),就像这样;
func tableView(tableView: NSTableView, didAddRowView rowView: NSTableRowView, forRow row: Int) {
print(row)
rowView.backgroundColor = NSColor(white: 255.0/255.0, alpha: 1.0)
}
print 语句的输出表明所有行(共有 17 行)都可以看到,但只有 last 行的背景颜色设置如下。我试图做类似的事情;
func tableView(tableView: NSTableView, didAddRowView rowView: NSTableRowView, forRow row: Int) {
if(row % 4 == 1) {
rowView.backgroundColor = NSColor(white: 255.0/255.0, alpha: 1.0)
}
}
预计从行索引 1 开始的每第四行将具有白色背景色。但是,这似乎不起作用。更具体地说,没有行具有调整后的(白色)背景颜色,并且默认返回到 IB 中设置的颜色。难道不能像这样交替改变行的颜色吗?
谢谢!
尝试将您的代码放入 cellForRowAtIndexPath:
。
例如
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as! UITableViewCell
cell.textLabel!.text = yourData[indexPath.row]
if indexPath.row%4 == 1 {
cell.backgroundColor = UIColor.blueColor()
}
return cell
}
这就是我的工作方式(我更改了 IB 中单元格的颜色以显示定义的白色有效):
import Cocoa
class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate {
let data = ["hello", "aloha", "bonjour", "ahoy!", "konnichiwa", "salut", "hallo", "yo", "hey", "wasup", "..."]
override func viewDidLoad() {
super.viewDidLoad()
}
func numberOfRowsInTableView(tableView: NSTableView) -> Int {
return data.count
}
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
var cellView = tableView.makeViewWithIdentifier("cell", owner: self) as! NSTableCellView
cellView.textField!.stringValue = data[row]
return cellView
}
func tableView(tableView: NSTableView, didAddRowView rowView: NSTableRowView, forRow row: Int) {
if(row % 4 == 1) {
rowView.backgroundColor = NSColor(white: 255.0/255.0, alpha: 1.0)
}
}
override var representedObject: AnyObject? {
didSet {
}
}
}
也许有人可以帮我解决这个问题。我一直在努力创建一个具有交替背景颜色的行的 NSTable,并决定使用代码(显然被截断),就像这样;
func tableView(tableView: NSTableView, didAddRowView rowView: NSTableRowView, forRow row: Int) {
print(row)
rowView.backgroundColor = NSColor(white: 255.0/255.0, alpha: 1.0)
}
print 语句的输出表明所有行(共有 17 行)都可以看到,但只有 last 行的背景颜色设置如下。我试图做类似的事情;
func tableView(tableView: NSTableView, didAddRowView rowView: NSTableRowView, forRow row: Int) {
if(row % 4 == 1) {
rowView.backgroundColor = NSColor(white: 255.0/255.0, alpha: 1.0)
}
}
预计从行索引 1 开始的每第四行将具有白色背景色。但是,这似乎不起作用。更具体地说,没有行具有调整后的(白色)背景颜色,并且默认返回到 IB 中设置的颜色。难道不能像这样交替改变行的颜色吗?
谢谢!
尝试将您的代码放入 cellForRowAtIndexPath:
。
例如
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as! UITableViewCell
cell.textLabel!.text = yourData[indexPath.row]
if indexPath.row%4 == 1 {
cell.backgroundColor = UIColor.blueColor()
}
return cell
}
这就是我的工作方式(我更改了 IB 中单元格的颜色以显示定义的白色有效):
import Cocoa
class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate {
let data = ["hello", "aloha", "bonjour", "ahoy!", "konnichiwa", "salut", "hallo", "yo", "hey", "wasup", "..."]
override func viewDidLoad() {
super.viewDidLoad()
}
func numberOfRowsInTableView(tableView: NSTableView) -> Int {
return data.count
}
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
var cellView = tableView.makeViewWithIdentifier("cell", owner: self) as! NSTableCellView
cellView.textField!.stringValue = data[row]
return cellView
}
func tableView(tableView: NSTableView, didAddRowView rowView: NSTableRowView, forRow row: Int) {
if(row % 4 == 1) {
rowView.backgroundColor = NSColor(white: 255.0/255.0, alpha: 1.0)
}
}
override var representedObject: AnyObject? {
didSet {
}
}
}