更改显示的窗口(Mac - Cocoa)

时间:2012-07-22 10:41:06

标签: objective-c xcode macos cocoa

很抱歉,如果这是一个非常基本的问题,但我是XCode和Mac开发的新手。我想知道如何获得一个窗口来更改其内容,而无需关闭并打开一个新窗口。例如:

- (IBAction)handlelock:(id)sender {
  [_window orderOut:sender];
  [_loginwindow makeKeyAndOrderFront:sender];
}  

但是,当我点击按钮时,有没有办法让_window显示_login的内容?

而不是关闭_window并打开_login窗口。

2 个答案:

答案 0 :(得分:2)

或者,只需交换窗口的内容视图:

- (IBAction)handlelock:(id)sender {
     NSView *previousContentView = _window.contentView;
     _window.contentView = _loginwindow.contentView;
     _loginwindow.contentView = previousContentView; // just store it in the other window
} 

通常你不需要多个窗口,但你只需要另一个视图并交换它。

答案 1 :(得分:1)

有几种方法可以做到这一点。您可以在xib文件中包含一个单独的视图,其中包含您在登录窗口中所需的内容,然后在您的窗口上调用setContentView:loginView,这将替换旧视图的旧视图。如果您希望能够切换回原始视图,您可能希望拥有一个指向原始视图的属性。

另一种方法是使用选项卡视图 - 如果您不喜欢选项卡视图的外观,那么有一个tabless tabview看起来不像它有选项卡---您将拥有一个视图选项卡,另一个登录视图。