Как получить «элемент» или индекс строки отредактированной ячейки текстового поля NSOutlineView? - PullRequest
0 голосов
/ 24 января 2019

Я использую NSOutlineView с текстовым полем / ячейкой текстового поля, как показано на изображениях ниже:

enter image description here

enter image description here

Код отправленной функции действия:

@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

Проблема:

"отправитель" объект является экземпляром NSTextField.Мне нужно получить «элемент» , возвращаемый моей функцией func outlineView(_ outlineView: NSOutlineView, child index: Int, ofItem item: Any?) -> Any.

Мне нужно либо получить «элемент» напрямую, либо индекс строки (который я могу получить"item" из моего словаря карты)

Так как "sender" является NSTextField, как я могу узнать, что это за строка (или "item"), которая только что была отредактирована?

Спасибо!

1 Ответ

0 голосов
/ 24 января 2019

Получить строку с row(for view и элемент с item(atRow

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

outlineView это NSOutlineView экземпляр

...