Macos NSTableView作为表单-nextKeyView问题(或如何强制加载所有行)

Macos NSTableView作为表单-nextKeyView问题(或如何强制加载所有行),macos,swift,nstableview,Macos,Swift,Nstableview,也许使用NSTableView作为表单是一个糟糕的想法,但我已经让它在各个方面都运行得很好,除了不能在字段之间进行制表 我有一个带有标签列和字段列的表。我还有一个数组,它跟踪表中的每一行及其附带的NSTextField控件。控件在tableView(tableView:viewForTableColumn:row:)期间加载时在数组中设置 在绘制tableview之后,我遍历数组中的每个控件,并将其nextKeyView设置为以下控件 这是可行的,但仅适用于屏幕上显示的控件。因为控件在加载之前不

也许使用NSTableView作为表单是一个糟糕的想法,但我已经让它在各个方面都运行得很好,除了不能在字段之间进行制表

我有一个带有标签列和字段列的表。我还有一个数组,它跟踪表中的每一行及其附带的NSTextField控件。控件在
tableView(tableView:viewForTableColumn:row:)
期间加载时在数组中设置

在绘制tableview之后,我遍历数组中的每个控件,并将其
nextKeyView
设置为以下控件

这是可行的,但仅适用于屏幕上显示的控件。因为控件在加载之前不会添加,所以屏幕外的表行不会连接起来

我目前的方法(非常糟糕)是手动滚动表格几次,以强制加载所有内容,然后设置所有NextKeyView。我还没有让它工作得很好,所以我希望有人有更好的主意。强制加载所有视图(如果可行的话)应该是一个不错的解决方案,但也可能有更智能的解决方案。

我想答案是

table.scrollRowToVisible(<row>)
table.scrollRowToVisible()

这将显示您要查看的行。

有趣。我尝试了
selectRowIndexes
,它选择了一行,但没有显示它:-/这是一个很好的开始,但为了澄清,假设我有一个20行的表,其中10行是可见的。当有人编辑第10行时,我无法将nextKeyView设置为第11行,因为它还不存在。使用这种强制滚动显示每一行的方法是可行的,但是用户可以看到,而且很难看。我希望找到一种不需要首先在屏幕上显示每个字段的方法。您可以自己截取选项卡并进行适当处理。截取选项卡,找出下一行是哪个NSTextField,滚动到该行,然后设置firstResponder?好主意。我将尝试一下,如果可行,我会给您打勾。NS(表)视图是NSResponder,您可以实现keyDown来获取选项卡。我想应该有用。好猎食:-)