NSTableViewCell setSelected?
NSTableViewCell setSelected?
当我 select 我的 tableView 上的那个单元格时,我如何在我的 NSViewController 和 NSTableViewCell 之间进行通信?
在 iOS 上您可以使用 setSelected 但在 OSX 上则完全不同。
NSTableCellView class 没有任何类似的功能。我可能会遗漏一些简单的东西。我如何与那个细胞交谈?我有一个自定义 class 单元格,在我的 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
}
我还有Row的高度...
func tableView(tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
if row == selectedRow{
return 90
}else{
return 40
}
}
我想做的是让我的手机知道它得到了 selected,所以它可以在 selected 时显示不同的东西。有人吗?
NSTableCellView
好像没有selected
属性。也许你可以将它子类化并添加这样的 属性.
然后,实现委托方法:
optional func tableView(_ tableView: NSTableView,
shouldSelectRow row: Int) -> Bool
...在您 return true
的情况下(即应选择该行),设置您刚刚定义的 selected
属性 true
.
对应的单元格
如果您希望单元格在选中时执行某些操作,请像这样定义您的 属性:
var selected:Bool {
didSet {
if selected {
// Act accordingly...
}
}
}
选择不对单元格进行操作,它对行进行操作。 NSTableRowView
有一个 selected
属性。它通常负责使用其 drawSelectionInRect()
方法绘制 table 行的选定外观。
您的单元格如何根据是否被选中而改变其行为或外观?您确定不应该按行完成吗?也许您应该使用 NSTableRowView
.
的自定义子类
如果必须,您可以从单元格视图中找到行视图。一种方法是假设单元格的父视图是行视图,当它不是 nil
时它应该是行视图。另一种方法是使用 rowForView(self)
向 table 视图询问单元格用于哪一行,然后使用 rowViewAtRow(_:makeIfNecessary:)
.
向 table 视图询问行视图
当我 select 我的 tableView 上的那个单元格时,我如何在我的 NSViewController 和 NSTableViewCell 之间进行通信? 在 iOS 上您可以使用 setSelected 但在 OSX 上则完全不同。 NSTableCellView class 没有任何类似的功能。我可能会遗漏一些简单的东西。我如何与那个细胞交谈?我有一个自定义 class 单元格,在我的 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
}
我还有Row的高度...
func tableView(tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
if row == selectedRow{
return 90
}else{
return 40
}
}
我想做的是让我的手机知道它得到了 selected,所以它可以在 selected 时显示不同的东西。有人吗?
NSTableCellView
好像没有selected
属性。也许你可以将它子类化并添加这样的 属性.
然后,实现委托方法:
optional func tableView(_ tableView: NSTableView,
shouldSelectRow row: Int) -> Bool
...在您 return true
的情况下(即应选择该行),设置您刚刚定义的 selected
属性 true
.
如果您希望单元格在选中时执行某些操作,请像这样定义您的 属性:
var selected:Bool {
didSet {
if selected {
// Act accordingly...
}
}
}
选择不对单元格进行操作,它对行进行操作。 NSTableRowView
有一个 selected
属性。它通常负责使用其 drawSelectionInRect()
方法绘制 table 行的选定外观。
您的单元格如何根据是否被选中而改变其行为或外观?您确定不应该按行完成吗?也许您应该使用 NSTableRowView
.
如果必须,您可以从单元格视图中找到行视图。一种方法是假设单元格的父视图是行视图,当它不是 nil
时它应该是行视图。另一种方法是使用 rowForView(self)
向 table 视图询问单元格用于哪一行,然后使用 rowViewAtRow(_:makeIfNecessary:)
.