首页 > 解决方案 > 使 NSTableView 行保持选中 Swift

问题描述

在用户按下调用方法以使用该 selectedRow 的按钮后,我将如何使 NSTableView 的先前 selectedRow 保持选中状态?

它在以前的程序中工作,如下所示:

selectedRow 保持选中状态

选择它会为其提供 OSX 选择颜色,单击保存按钮会使 textField becomeFirstResponder() 使行自动变为灰色并且不会更改 selectedRow 属性。这不是由我的代码完成的,所以我很高兴它可以正常工作。

现在在一个类似的程序中,我想完全实现这一点,但是在单击一个按钮(调用使 textField becomeFirstResponder() 的方法)后,视觉选择消失了,tableView 属性 selectedRow 也返回到-1(未选择行)。

我尝试了很多想法,网上的大多数答案都是objective-C。这是我最近的代码(被同一个按钮调用并且几乎伪造了以前自动工作的代码):

NSTableViewAction 方法和 selectedRowCache 变量:

var selectedRowCache = -1

@IBAction func alarmDataTableView(_ sender: NSTableView) {

    selectedRowCache = alarmDataTableView.selectedRow

}

按钮动作:

@IBAction func editAlarmButton(_ sender: NSButton) {

    let row = alarmDataTableView.rowView(atRow: self.selectedRowCache,      makeIfNecessary: false)

    row?.backgroundColor = .blue

}

selectedRowCache 只是一个变量,每当用户选择一行时它都会保存 selectedRow (我不想要这个)。

不使用此代码,行的背景颜色不会做任何事情(除了在调用按钮方法后丢失其选择)。

NSTableView 是基于视图的。

感谢您的任何帮助!

标签: swiftxcodetableviewswift4nstableview

解决方案


推荐阅读