How to close a window programmatically in Cocoa Mac?

前端 未结 4 1786
说谎
说谎 2021-02-04 13:20

How can I programmatically close a window in cocoa mac ? I have opened a second window/xib from the first window/xib using button click. I need to close the first window/xib pro

相关标签:
4条回答
  • 2021-02-04 13:29

    I was looking for this for ages! A simple

    [self close];
    [self release];
    

    worked for me. :-)

    0 讨论(0)
  • 2021-02-04 13:31

    U may use "performClose" action. Choose nib file (your window which u wont closed), open Connections inspector, connect "performClose" action with u button.

    0 讨论(0)
  • 2021-02-04 13:41

    Apple has some useful sample code on Nib Loading. It doesn't directly address this question however; the following code does.

    @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
    
    0 讨论(0)
  • 2021-02-04 13:41

    This is for someone who is using Swift and NSStoryBoardSegue, here is the same way to achieve it

    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.
    
    0 讨论(0)
提交回复
热议问题