Я зашел в тупик с моим кодом.У меня есть вид ячейки NSTableView, где я импортирую CSV-файл.Я хотел бы использовать табличное представление как электронную таблицу.Если я нажму клавишу возврата после редактирования определенной ячейки, она должна перейти к следующей строке, выделить ее и сделать ее редактируемой.
Я нашел код, написанный в цели c, но у меня не работает ни один.
Как мне это сделать?Надеюсь, что кто-нибудь сможет помочь.
Заранее спасибо.
У меня есть код:
func controlTextDidEndEditing(_ notification: Notification) {
let editedColumn: Int = tableMain.editedColumn
let editedRow: Int = tableMain.editedRow
let lastRow: Int = tableMain.numberOfRows
let lastCol: Int = tableMain.numberOfColumns
var userInfo = notification.userInfo
let textMovement = Int(truncating: userInfo?["NSTextMovement"] as? NSNumber ?? 0)
//super.textDidEndEditing(notification)
if textMovement == NSTabTextMovement {
if editedColumn != lastCol - 1 {
tableMain.selectRowIndexes(NSIndexSet(index: editedRow) as IndexSet, byExtendingSelection: false)
tableMain.editColumn(editedColumn + 1, row: editedRow, with: nil, select: true)
} else {
if editedRow != lastRow - 1 {
tableMain.editColumn(0, row: editedRow + 1, with: nil, select: true)
} else {
tableMain.editColumn(0, row: 0, with: nil, select: true) // Go to the first cell
}
}
} else if textMovement == NSReturnTextMovement {
if editedRow != lastRow - 1 {
tableMain.selectRowIndexes(NSIndexSet(index: editedRow + 1) as IndexSet, byExtendingSelection: false)
tableMain.editColumn(editedColumn, row: editedRow + 1, with: nil, select: true)
} else {
if editedColumn != lastCol - 1 {
tableMain.editColumn(editedColumn + 1, row: 0, with: nil, select: true)
} else {
tableMain.editColumn(0, row: 0, with: nil, select: true) //Go to the first cell
}
}
}
}