【问题标题】:How to close a window programmatically in Cocoa Mac?如何在 Cocoa Mac 中以编程方式关闭窗口?
【发布时间】:2011-08-01 06:54:20
【问题描述】:

如何以编程方式关闭 cocoa mac 中的窗口?我使用按钮单击从第一个窗口/xib 打开了第二个窗口/xib。我需要在打开或单击按钮时以编程方式关闭第一个窗口/xib。我怎样才能做到这一点?

【问题讨论】:

  • 对于 orderOut,它显示我们的 firstView 可能无法响应 orderOut!
  • 试过[窗口关闭];之前,但它没有工作!
  • firstView 是我的第一个同胞类
  • 第一个窗口连接的插座叫什么名字?
  • 令人惊讶的是,这似乎不是一个骗局,所以为了完整起见,我提供了一个答案。这只是代码;正如@dreamlax 的 cmets 所暗示的,这里没有太多的讨论。

标签: objective-c cocoa macos window xib


【解决方案1】:

Apple 在Nib Loading 上有一些有用的示例代码。然而,它并没有直接解决这个问题;以下代码可以。

@interface CloseWindowAppDelegate : NSObject <NSApplicationDelegate> {
    NSWindow *window;
    IBOutlet NSWindow * secondWindow;
    NSNib * secondNib;
}

@property (assign) IBOutlet NSWindow *window;

- (IBAction)openSecondWindow:(id)sender;

- (IBAction)closeSecondWindow:(id)sender;

@end

#import "CloseWindowAppDelegate.h"

@implementation CloseWindowAppDelegate

@synthesize window;

- (IBAction)openSecondWindow:(id)sender {
    secondNib = [[NSNib alloc] initWithNibNamed:@"SecondWindow" bundle:nil];
    [secondNib instantiateNibWithOwner:self topLevelObjects:nil];
    [secondWindow makeKeyAndOrderFront:nil];

}

- (IBAction)closeSecondWindow:(id)sender {
    [secondWindow close];
    [secondNib release];

}

@end

【讨论】:

  • > 很好解释的代码。发现非常有用。 stackoverflow 的新手,印象非常深刻。像你这样的人在这里解释得很好。谢谢。 :)
  • @Josh-> 效果很好。谢谢。您的代码对我面临的问题很有用。 :)
【解决方案2】:

您可以使用“执行关闭”操作。选择 nib 文件(你不会关闭的窗口),打开 Connections 检查器,用 u 按钮连接“performClose”操作。

【讨论】:

    【解决方案3】:

    我一直在寻找这个! 一个简单的

    [self close];
    [self release];
    

    为我工作。 :-)

    【讨论】:

      【解决方案4】:

      这适用于使用SwiftNSStoryBoardSegue的人,这是实现它的相同方法

      NSApplication.sharedApplication().mainWindow?.close() // close current window first
      self.performSegueWithIdentifier("id_of_your_segue", sender: self) // open the second view by invoking the segue that is set to connect  two views.
      

      【讨论】:

        猜你喜欢
        • 2014-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-17
        • 2013-12-12
        • 2011-05-28
        • 2017-04-13
        相关资源
        最近更新 更多