Мне нужен доступ к значениям TableView на основе моей ячейки с другого контроллера.Я делаю этот код в моем главном контроллере, а tableView находится в дочернем контроллере.
Вот что я делаю, но получаю ноль ...
// First grab the tableView controller
let myTableViewController = self.children[0] as! MyTableViewController
// Now I want to access the first row to get values of the textFields
let firstRowView = myTableViewController.theTable.rowView(atRow: 0, makeIfNecessary: true)
//Let's try another way :
let firstView = myTableViewController.theTable.view(atColumn: 0, row: 0, makeIfNecessary: true)
//I can't do more because "firstRowView" and "firstView " are nil
Мне нужен массив, содержащий всю строку таблицы, например:
let array1 = ["Peter","Quinn","1","387","49"]
РЕДАКТИРОВАТЬ:
Я пытался с просмотр базы tableView, он работает, я могу получить textFields в моем массиве.
Но если отредактировать текстовое поле, щелкнув по нему (изменив «Питер» на «Франк»), это не сработает, NSTextField исчезает в утилите отладки ...
let firstRowView = myTableViewController.theTable.rowView(atRow: 0, makeIfNecessary: true)?.subviews // return the first TableView
let textFields = firstRowView!.map { $0.subviews } as! [[NSTextField]]
let texts = textFields.map {$0.first!.stringValue}
print(texts) // let array1 = ["Peter","Quinn","1","387","49"]
Почему я больше не работаю, если я вручную изменяю текст?
Вот что содержит "firstRowView", когда я надеваюне редактировать ячейку вручную:
И вот что содержит «firstRowView», когда я вручную редактирую ячейку, и она разбилась:
Вы можете видеть, что NSTableCellView преобразован в NSView, и мое textField исчезло ... (оно все еще есть в пользовательском интерфейсе, конечно ...)