gpt4 book ai didi

如果鼠标在行上,则快速取消隐藏一列中的按钮

转载 作者:行者123 更新时间:2023-11-28 08:03:34 25 4
gpt4 key购买 nike

我使用 swift 4 for osx。我有一个基于 View 的 NSTableView,有 4 列。每列中的单元格都有相同的自定义单元格类:

class CustomCell: NSTableCellView {


@IBOutlet weak var btnInfo: NSButton!

private var trackingArea: NSTrackingArea!


override func awakeFromNib() {
super.awakeFromNib()

self.trackingArea = NSTrackingArea(
rect: bounds,
options: [.activeAlways, .mouseEnteredAndExited],
owner: self,
userInfo: nil
)
addTrackingArea(trackingArea)
}


override func mouseEntered(with event: NSEvent) {
super.mouseEntered(with: event)
btnInfo.isHidden = false
}

override func mouseExited(with event: NSEvent) {
super.mouseExited(with: event)
btnInfo.isHidden = true
}


}

现在我想实现以下情况:

如果用户将鼠标移到一行上,btnInfo 应该可见并再次隐藏,如果鼠标离开该行。

问题是(使用上面的代码),我的应用程序崩溃了,因为 btnInfo 将为零

逻辑上:因为这个按钮只有在第 4 列可用。在所有其他列中,它将为零。

我该如何解决这个问题?

最佳答案

解决方案是将 NSTrackingArea 添加到整个 View ,而不是单个单元格。然后在整个表格 View 上,可以获取鼠标移动事件,取NSEventlocationInWindow。然后 NSTableView 有一个方法 row(at point: NSPoint) -> Int 可以让你得到应该突出显示按钮的当前行。

关于如果鼠标在行上,则快速取消隐藏一列中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45841693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com