2011-05-30 110 views
3

我有一个包含一个NSSearchField范围栏时,tab键字段。可以使用菜单项来显示和隐藏酒吧。我通过创建一个新的NSViewController(并从XIB加载一个新的视图)来生成此栏。当显示了吧,我做了addSubview:到窗口的内容查看;当酒吧被隐藏时,我会在视图控制器中查看removeFromSuperview问题添加和删除视图

如果当我启动应用程序,并已开的酒吧,打标签的范围栏窗口内的主视图(表视图)和搜索栏之间切换。如果我启动该应用程序并且该栏未显示,则一旦显示栏可以从表格视图切换到搜索栏,但不能以其他方式显示。

一旦予除去首次范围栏,然后再次显示它,我可以在搜索字段和表视图之间不再标签,无论哪个视图当前选择。

有什么我需要除了addSubview在做:removeFromSuperview?我无法将我的头围绕为什么这不起作用,特别是为什么如果栏在启动时显示,我会得到不同的行为。

回答

1

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

+0

您当然也可以在添加/删除视图后手动调用' - [NSWindow recalculateKeyViewLoop]'。 – jrc 2012-11-09 14:44:53

3

你需要设置两种观点的nextKeyView,如果你想控制,当你按下TAB键会发生什么。

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

但是,您需要小心,因为您可以打破自动构建的按键视图循环。 This article有关于如何处理这种情况的更多细节。

+0

这似乎是工作,但变得非常困难了许多意见(和想要保持一致的顺序)进行管理。 – livings124 2011-05-31 02:19:39