0
osxの場合はスウィフト4で作業しています。 私は4列のビューベースのNSTableViewを持っています。各列の 細胞が同じカスタムセルクラスを持っている:ユーザーが行の上にマウスで行けば、btnInfoがあるべきマウスが横になっている場合は、1つの列のボタンを非表示にします
:
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
}
}
今私は、次のような状況を実現したいと思います表示され、再度非表示にすると、マウスが行を離れます。このボタンは、唯一の4欄で提供されていますので:
問題はbtnInfoが論理的に
はnilとなりますので、私のアプリは、クラッシュすること、(上記のコードで)です。他のすべての列には が含まれています。
どうすればこの問題を解決できますか?
複数のテーブルセルビューを使用できます。このセルビューを4列目に戻し、デフォルトのセルビューまたは別のカスタムセルビューを返します。 – vadian
あなたは間違った場所でそれをやっています。それはコントローラではないので、NSTableCellViewの仕事ではありません。 –