当我在我的NSViewController上选择该单元格时,如何在NSTableViewCell和NSTableViewCell之间进行通信?在iOS上,您可以使用setSelected,但在OSX中则完全不同。NSTableCellView类没有这样的函数。我可能错过了一些简单的东西。我该怎么和那个牢房说话?我有一个自定义的类单元格,在我的tableView控制器上,我得到了:
func tableView(tableView: NSTableView, shouldSelectRow row: Int) -> Bool {
let previousSelected = NSIndexSet(index: selectedRow)
selectedRow = row
let indset = NSIndexSet(index: row)
// animate row expansion
self.tableView.noteHeightOfRowsWithIndexesChanged(indset)
// animate back the previously selected
self.tableView.noteHeightOfRowsWithIndexesChanged(previousSelected)
return true
}我还有排的高度..。
func tableView(tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
if row == selectedRow{
return 90
}else{
return 40
}
}我想要做的是让我的细胞知道它被选中了,这样它就可以在选择的时候显示不同的东西。有人吗?
发布于 2015-10-21 03:35:17
选择不对单元格进行操作,而是对行进行操作。NSTableRowView有一个selected属性。它通常负责使用其drawSelectionInRect()方法绘制表行的选定外观。
您的单元格是如何根据其是否被选中而改变其行为或外观的?你确定这不应该由行来完成吗?也许您应该使用NSTableRowView的自定义子类。
如果必须,可以从单元格视图中找到行视图。一种方法是假设单元格的superview是行视图,当它不是nil时,它应该是行视图。另一种方法是询问表格视图单元格用于使用rowForView(self)的行,然后使用rowViewAtRow(_:makeIfNecessary:)询问行视图的表视图。
发布于 2015-10-21 03:08:05
NSTableCellView似乎没有selected属性。也许您可以对它进行子类并添加这样的属性。
然后,实现委托方法:
optional func tableView(_ tableView: NSTableView,
shouldSelectRow row: Int) -> Bool在返回...and的情况下(即应该选择行),将刚才定义的对应单元格的selected属性设置为true。
如果希望单元格在选中时执行某些操作,请如下所示定义您的属性:
var selected:Bool {
didSet {
if selected {
// Act accordingly...
}
}
}https://stackoverflow.com/questions/33249456
复制相似问题