首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSTableViewCell setSelected?

NSTableViewCell setSelected?
EN

Stack Overflow用户
提问于 2015-10-21 01:23:54
回答 2查看 815关注 0票数 0

当我在我的NSViewController上选择该单元格时,如何在NSTableViewCellNSTableViewCell之间进行通信?在iOS上,您可以使用setSelected,但在OSX中则完全不同。NSTableCellView类没有这样的函数。我可能错过了一些简单的东西。我该怎么和那个牢房说话?我有一个自定义的类单元格,在我的tableView控制器上,我得到了:

代码语言:javascript
复制
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
}

我还有排的高度..。

代码语言:javascript
复制
func tableView(tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
    if row == selectedRow{
        return 90
    }else{
        return 40
    }
}

我想要做的是让我的细胞知道它被选中了,这样它就可以在选择的时候显示不同的东西。有人吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-21 03:35:17

选择不对单元格进行操作,而是对行进行操作。NSTableRowView有一个selected属性。它通常负责使用其drawSelectionInRect()方法绘制表行的选定外观。

您的单元格是如何根据其是否被选中而改变其行为或外观的?你确定这不应该由行来完成吗?也许您应该使用NSTableRowView的自定义子类。

如果必须,可以从单元格视图中找到行视图。一种方法是假设单元格的superview是行视图,当它不是nil时,它应该是行视图。另一种方法是询问表格视图单元格用于使用rowForView(self)的行,然后使用rowViewAtRow(_:makeIfNecessary:)询问行视图的表视图。

票数 2
EN

Stack Overflow用户

发布于 2015-10-21 03:08:05

NSTableCellView似乎没有selected属性。也许您可以对它进行子类并添加这样的属性。

然后,实现委托方法:

代码语言:javascript
复制
optional func tableView(_ tableView: NSTableView,
        shouldSelectRow row: Int) -> Bool

在返回...and的情况下(即应该选择行),将刚才定义的对应单元格的selected属性设置为true

如果希望单元格在选中时执行某些操作,请如下所示定义您的属性:

代码语言:javascript
复制
var selected:Bool {
    didSet {
        if selected {
            // Act accordingly...
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33249456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档