Я хочу изменить индекс кнопки popUp в NSTableView.
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
let dataCell:NSPopUpButtonCell = tableColumn?.dataCell as! NSPopUpButtonCell
dataCell.addItems(withTitles: dataTypes)
return data.type //dataCell
}
func tableView(_ tableView: NSTableView, setObjectValue object: Any?, for tableColumn: NSTableColumn?, row: Int) {
dataSourceArr[row].type = dataTypes[object as! Int]
tableView.reloadData()
}
Я могу обновить свой массив dataSource, но не могу обновить в tableView.
@vadian вид таблицы ячеек ...
Настоятельно рекомендуется использовать табличные представления на основе представлений. Их намного проще обслуживать





Для этого вы можете использовать метод willDisplayCell NSTableViewDelegate.
extension ViewController: NSTableViewDelegate {
func tableView(_ tableView: NSTableView, willDisplayCell cell: Any, for tableColumn: NSTableColumn?, row: Int) {
guard let dataCell = cell as? NSPopUpButtonCell else {return}
dataCell.selectItem(at: row) // or dataCell.selectItem(withTitle: //title)
}
}
Это табличное представление на основе представления или ячейки? Вы должны сохранить состояние всплывающего окна в модели данных и использовать Cocoa Bindings.