如何停用或隐藏 Xcode 中的视图?

How to deactivate or hide a view in Xcode?

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

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

如何以正确的方式从一个视图切换到另一个视图?

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

隐藏应该没问题。您可能想要切换顺序,以便在将另一个视图设置为未隐藏之前始终将一个视图设置为隐藏。

您还可以从视图层次结构 (removeFromSuperview()) 中删除视图,以此作为有效隐藏它的方法。确保代码中的某些内容保持对视图的强引用。视图控制器可以,所以这可能已经足够好了(假设您也有对视图控制器的强引用)。

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