也许有人可以帮我解决这个问题。我一直在努力为行创建一个交替背景颜色的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中的颜色集。难道不可能像这样以交替的方式改变行颜色吗?
谢谢!
答案 0 :(得分:2)
这就是它如何为我工作(我改变了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 {
}
}
}
答案 1 :(得分:0)
尝试将您的代码放入cellForRowAtIndexPath:
。
e.g。
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
}