【问题标题】:How to close first window programmatically in Cocoa Mac?如何在 Cocoa Mac 中以编程方式关闭第一个窗口?
【发布时间】:2014-05-21 23:01:54
【问题描述】:

我想单击第一个窗口上的按钮以打开第二个窗口并同时关闭第一个窗口,类似于此窗口。但是按钮处理程序在 AppDelegate 类中并且它没有 [自我关闭] How to close a window programmatically in Cocoa Mac?

如何关闭第一个窗口?我应该为第一个窗口创建另一个 xib 并从 AppDelegate 加载吗?

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

    如果您的应用委托还没有第一个窗口的 IBOutlet ivar 或属性,则添加一个,然后使用该引用关闭第一个窗口。然后创建新窗口(以编程方式或通过使用 IBOutlet ivar 上的 makeKeyAndOrderFront 方法或属性到第二个窗口(不应将其设置为“启动时可见”行为集))。

    // close front window…
    NSArray *orderedWindows = [NSApp orderedWindows];
    NSWindow *frontWindow = orderedWindows[0];
    [frontWindow close];
    
    // create new window…
    NSRect windowRect = NSMakeRect(0., 0., 640., 480.);
    NSUInteger styleMask =  NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask;
    NSWindow * newWindow = [[NSWindow alloc] initWithContentRect:windowRect styleMask:styleMask backing:NSBackingStoreRetained defer:YES];
    

    【讨论】:

    • 我的应用程序委托有这个@property (assign) IBOutlet NSWindow *window;我应该用第一个窗口替换这一行吗?
    • 否;但如果这是您要关闭的窗口,则 '[window close];'而不是我代码中的“frontWindow”内容。
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2013-12-12
    • 2011-05-28
    相关资源
    最近更新 更多