如何在XCode中停用或隐藏视图?

时间:2015-04-04 16:09:03

标签: objective-c xcode macos nsview

在NSView中,我有一个容器视图和两个NSButton(见图)。 NSButton更改容器视图中的内容。为了显示视图并隐藏另一个视图,我这样做:

@IBAction func changeView(sender: NSButton)
{
     switch sender.id
     {
         case "Button 1" { view1.hidden = true; view2.hidden = false; }
         case "Button 2" { view1.hidden = false; view2.hidden = true; }
     }
}

它工作正常,但是因为在视图中有很多要绘制的(字段,按钮和图像),从视图切换到另一个视图有点(非常小)慢。我怀疑这种方法不正确。

我怎样才能以适当的方式从视图切换到另一个视图?

image

2 个答案:

答案 0 :(得分:2)

我不确定它是否更快,但使用tabless NSTabView肯定更方便。这样,您可以在笔尖中设置视图,而不会混淆看似重叠的视图。

答案 1 :(得分:2)

隐藏应该没问题。您可能希望切换顺序,以便在设置其他视图未隐藏之前始终隐藏视图。

您还可以从视图层次结构(removeFromSuperview())中删除视图,以便有效地隐藏它。确保代码中的某些内容保持对视图的强引用。视图控制器确实如此,因此可能足够好(假设您还有一个对视图控制器的强引用)。

而且,是的,将视图放在NSTabView中并进行切换也很有效(基本上是使用上述技术之一)。