添加和删​​除视图时出现问题

Posted

技术标签:

【中文标题】添加和删​​除视图时出现问题【英文标题】:Problem tabbing to field when adding and removing view 【发布时间】:2011-05-30 02:33:02 【问题描述】:

我有一个包含 NSSearchField 的范围栏。可以使用菜单项显示和隐藏该栏。我通过创建一个新的 NSViewController(并从 XIB 加载一个新视图)来生成这个栏。当显示栏时,我对窗口的 contentView 执行 addSubview:;当栏被隐藏时,我对视图控制器中的视图执行 removeFromSuperview

如果当我启动应用程序并且栏已经打开时,点击选项卡会在窗口内的主视图(表格视图)和范围栏中的搜索字段之间切换。如果我启动应用程序并且该栏尚未显示,一旦我显示该栏,我可以从表格视图切换到搜索字段,但不能以其他方式。

一旦我第一次删除范围栏,然后再次显示,无论当前选择哪个视图,我都无法再在搜索字段和表格视图之间切换。

除了 addSubview:removeFromSuperview 之外,我还有什么需要做的吗?我无法理解为什么这不起作用,尤其是为什么在启动时显示栏时我会得到不同的行为。

【问题讨论】:

【参考方案1】:

如果您想控制按 Tab 键时发生的情况,则需要设置两个视图的 nextKeyView

[yourTableView setNextKeyView:yourSearchField];
[yourSearchField setNextKeyView:yourTableView];

但是,您需要小心,因为您可能会破坏自动构建的键视图循环。 This article 有更多关于如何处理这种情况的详细信息。

【讨论】:

这似乎可行,但对于许多视图(并希望保持一致的顺序)进行管理变得极其困难。【参考方案2】:

我能够通过在视图窗口上将 setAutorecalculatesKeyViewLoop: 设置为 true 来获得所需的行为。

【讨论】:

当然也可以在添加/删除视图后手动调用-[NSWindow recalculateKeyViewLoop]

以上是关于添加和删​​除视图时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

添加和删​​除文件以不完全重写文件的最有效方法是啥?

php 添加和删​​除数组

powershell 添加和删​​除Windows存储来自Powershell / CMD的应用程序

sql 添加和删​​除Postgres jsonb子键特有的元素:简短Set实现

重用表格视图单元格时出现问题?

sql server 创建视图添加表时出现从其他数据库导入的表未显示出来