【问题标题】:Change what window displays (Mac - Cocoa)更改显示的窗口 (Mac - Cocoa)
【发布时间】:2012-07-22 10:41:06
【问题描述】:

对不起,如果这是一个非常基本的问题,但我对 XCode 和 Mac 开发一般来说是新手。我想知道如何让一个窗口更改其内容,而不必关闭并打开一个新窗口。例如:

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

但不是关闭_window再打开_login窗口,有没有办法让_window在我点击按钮时显示_login的内容?

【问题讨论】:

    标签: objective-c xcode macos cocoa


    【解决方案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 选项卡视图,因为这听起来最简单。
    猜你喜欢
    • 1970-01-01
    • 2018-06-13
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多