【发布时间】:2018-08-25 21:27:55
【问题描述】:
对于那些不喜欢阅读 20 cmets 的人来寻找答案。这对我有用:
- tableView 是基于视图的,而不是基于单元格的(属性检查器)
- tableView.reloadData() 不够快。使用 insertRow(at[0]:withAnimation:.leftSlide) 代替工作正常
- 确保 NSTextField 和 NSTextFieldCell 是可编辑的(属性检查器)
最终代码:
tableViewAlarms.insertRows(at: [0], withAnimation: .effectFade)
let keyView = tableViewAlarms.view(atColumn: 0, row: 0, makeIfNecessary: false) as! NSTableCellView
self.view.window!.makeFirstResponder(keyView.textField)
问题:
有一个问题。我被困了一段时间,让我的 NSTableView 按我想要的方式工作。我是初学者,使用类、继承和视图给我带来了很多麻烦。
screenshot, the NSTextField is activated
您可以通过按“+”按钮向 NSTableView 添加一行。
第一个 tableColumn 中的 NSTextField 是可编辑的,双击时开始编辑
现在我希望在添加一行时自动激活第一列中的 NSTextField(显示光标,响应通过键盘输入的文本)。
到目前为止我已经尝试过:
class NSTextFieldSubClass: NSTextField {
override func becomeFirstResponder() -> Bool {
return true
}
}
我还玩弄了单元格的绑定(或者准确地说是 NSTextField 本身),但由于我真的不知道如何解决这些问题,所以它一无所获
我认为要走的路:
在创建单元格时将 NSTextField 设为 firstResponder,但我不知道如何操作。非常感谢任何帮助!
还有:当光标闪烁时调用的 NSTextField 的状态究竟如何?
编辑:
至于子类,这就是我所尝试的:
class NSTextFieldSubClass: NSTextField {
override func becomeFirstResponder() -> Bool {
return true
}
}
编辑截图:
编辑2:
编辑3:
编辑4:
【问题讨论】:
-
有人吗?会有很大帮助!
标签: swift macos nstableview nstextfield