首页 > 解决方案 > 如何获取已编辑的 NSOutlineView 文本字段单元格的“项目”或行索引?

问题描述

我正在使用带有文本字段/文本字段单元格的 NSOutlineView,如下图所示:

在此处输入图像描述

在此处输入图像描述

发送动作函数的代码:

@IBAction func handleTextFieldDidEndEditing(_ sender: Any) {
    print("LeftNavBarOutlineView selectedRow: \(self.selectedRow)")
    print("LeftNavBarOutlineView editedRow: \(self.editedRow)")
    print("LeftNavBarOutlineView selectedRowIndexes.count: \(self.selectedRowIndexes.count)")

    let taskName = (sender as! NSTextField).stringValue
    print("LeftNavBarOutlineView " + taskName)
}

打印结果:

LeftNavBarOutlineView selectedRow: -1
LeftNavBarOutlineView editedRow: -1
LeftNavBarOutlineView selectedRowIndexes.count: 0
LeftNavBarOutlineView

问题:

“sender”对象是一个 NSTextField 实例。我需要检索我的函数返回的“项目” 。func outlineView(_ outlineView: NSOutlineView, child index: Int, ofItem item: Any?) -> Any

我要么需要直接获取“项目”,要么需要行索引(我可以从我的地图词典中检索“项目”)

由于“发件人”是一个 NSTextField,我怎样才能找出刚刚编辑的行(或“项目”)是什么?

谢谢!

标签: swiftmacosnstableviewnsoutlineview

解决方案


获取行row(for view和项目item(atRow

@IBAction func handleTextFieldDidEndEditing(_ sender: NSTextField) {
    let row = outlineView.row(for: sender)
    let item = outlineView.item(atRow: row)

outlineViewNSOutlineView实例


推荐阅读