更改显示的窗口 (Mac - Cocoa)
Posted
技术标签:
【中文标题】更改显示的窗口 (Mac - Cocoa)【英文标题】:Change what window displays (Mac - Cocoa) 【发布时间】:2012-07-22 10:41:06 【问题描述】:对不起,如果这是一个非常基本的问题,但我对 XCode 和 Mac 开发一般来说是新手。我想知道如何让一个窗口更改其内容,而不必关闭并打开一个新窗口。例如:
- (IBAction)handlelock:(id)sender
[_window orderOut:sender];
[_loginwindow makeKeyAndOrderFront:sender];
但不是关闭_window再打开_login窗口,有没有办法让_window在我点击按钮时显示_login的内容?
【问题讨论】:
【参考方案1】:或者,只是交换窗口的内容视图:
- (IBAction)handlelock:(id)sender
NSView *previousContentView = _window.contentView;
_window.contentView = _loginwindow.contentView;
_loginwindow.contentView = previousContentView; // just store it in the other window
不过,通常您不需要多个窗口,您只需拥有另一个视图并将其换入即可。
【讨论】:
哈哈,你究竟是如何制作另一个视图的? (对不起,我真的刚刚开始):) @haseo98 最简单的初学者方法是进入 Interface Builder,从调色板中拖入“自定义视图”,然后在您的主类中,创建一个 IBOutlet 并将其连接到该自定义视图,然后您现在可以使用您的 IBOutlet NSView 作为您的“新视图”。【参考方案2】:有几种方法可以做到这一点。您可以在 xib 文件中有一个单独的视图,其中包含您在登录窗口中想要的内容,然后在您的窗口上调用 setContentView:loginView ,这会将旧视图换成新视图。如果您希望能够切换回原始视图,您可能希望拥有一个指向原始视图的属性。
另一种方法是使用选项卡视图——如果您不喜欢选项卡视图的外观,则有一个看起来不像有选项卡的表格选项卡视图——您将拥有一个视图选项卡,以及另一个选项卡中的登录视图。
【讨论】:
我确信这是一个糟糕的想法是有原因的(这听起来从根本上是错误的),但我正在使用 tables 选项卡视图,因为这听起来最简单。以上是关于更改显示的窗口 (Mac - Cocoa)的主要内容,如果未能解决你的问题,请参考以下文章