编辑后按下 return 键时移动到下一个 NSTableview 行

Move to next NSTableview Row when return key is pressed after editing

我的代码陷入了死胡同。我有一个单元格视图 NSTableView,我在其中导入一个 csv 文件。我想将 tableview 用作电子表格。如果我在编辑特定单元格后按下 return 键,它应该移动到下一行,突出显示它并使其可编辑。

我找到了用 objective c 编写的代码,但 none 对我有用。

我该怎么做?希望有人能够提供帮助。

提前致谢。

我有代码:

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
                }
            }
        }
}

我设法解决了我的问题,可能不是最好的方法,但对我来说 100% 有效。

我将 tableView 更改为基于视图。然后我为 TextFields 添加了一个动作。执行动作后,我输入了以下代码:

 tableWages.selectRowIndexes(NSIndexSet(index: tableWages.selectedRow + 1) as IndexSet, byExtendingSelection: false)
 tableWages.editColumn(colNr, row: tableWages.selectedRow, with: nil, select: true)

因此在编辑值并按下 Return 键后,它会移动到下一行并停留在同一列中,使下一个值可编辑。