У меня есть NSTableView, основанный на представлении, где все ячейки доступны для редактирования. Мне нужно обновлять данные из модели каждый раз, когда пользователь изменяет textField из представления.Редактировать данные в модели в соответствии с вводом пользователя в NSTableView на основе представления
Весь документ, который я нашел, связан с NSTableView на основе ячеек.
У кого-нибудь есть ключ к этому поводу?
EDIT:
Я использую источник данных для заполнения этой NSTableView.
Это код Контролера NSTableView
class ViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource {
@IBOutlet var globalView: NSView!
@IBOutlet var songsTableView: NSTableView!
var tableContents = NSMutableArray()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
for (song) in songManager.songs {
var obj = Dictionary<String,String>()
obj["title"] = song.title
obj["artist"] = song.artist
tableContents.addObject(obj)
}
songsTableView.reloadData()
}
func numberOfRowsInTableView(tableView: NSTableView) -> Int {
return tableContents.count
}
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView?{
var obj = tableContents[row] as Dictionary<String,String>
let column = tableColumn?.identifier
var cellView = tableView.makeViewWithIdentifier(column!, owner: self) as NSTableCellView
if column == "title" {
cellView.textField?.stringValue = obj["title"]!
}
if column == "artist" {
cellView.textField?.stringValue = obj["artist"]!
}
cellView.textField?.editable = true
return cellView
}
}
И это код класса, который управляет данными.
var songManager = SongManager()
struct song {
var title = "No name"
var artist = "No artist"
}
class SongManager: NSObject {
var songs = [song]()
func addSong(title: String, artist: String) {
songs.append(song(title: title, artist: artist))
}
}
Я не трогали строку, раскадровка создает по умолчанию, так что я предполагаю, что он содержит один NSTextField.
Я получаю, чтобы отображать данные, но не могу определить, когда пользователь попытался изменить текстовое поле.
Нам нужно знать больше. Используете ли вы привязки или источник данных для заполнения представления таблицы? Какова природа элементов в модели данных? Например, с привязками, каковы элементы содержимого контроллера массива? С источником данных вы возвращаетесь из метода '-tableView: objectValueForTableColumn: row:'? Каковы ваши взгляды на ячейки? Используете ли вы 'NSTableCellView' с одним или несколькими subviews? Или вы просто используете 'NSTextField' в качестве прямого представления ячейки? –
Спасибо, что ответили на @KenThomases. Должен ли я предоставить дополнительную информацию? –