如何在使用X关闭Mac桌面应用程序后重新打开它?

时间:2012-08-11 07:30:31

标签: objective-c xcode cocoa

我已经创建了一个适用于Mac桌面的App,它正在运行,但Apple拒绝了它,因为当我们运行App并使用“X”关闭它时,我们无法通过App图标从Dock重新打开它仍然存在,但它没有再次打开应用程序,我正在努力的主要问题是“如果我们关闭应用程序,然后在菜单栏中没有选项打开它”我见过的其他应用程序

我该怎么办?

3 个答案:

答案 0 :(得分:1)

要为红色(x)按钮实现简单的显示/隐藏功能,请将App Delegate类作为主窗口的窗口委托。

然后将以下代码添加到其中:

- (BOOL)windowShouldClose:(id)sender {
    [[NSApplication sharedApplication] hide:self];

    return NO;
}

- (void)applicationDidBecomeActive:(NSNotification *)notification {
    [[NSApplication sharedApplication] unhide:self];
}

答案 1 :(得分:1)

这是Swift 3的答案:

在View Controller类中符合NSWindowDelegate。然后通过覆盖以下方法隐藏窗口而不是关闭它。

self.view.window?.delegate = self

func windowShouldClose(_ sender: Any) -> Bool {
    NSApplication.shared().hide(self)
    return false
}

然后在停靠栏中点击应用程序图标时取消隐藏应用程序。

func applicationDidBecomeActive(_ notification: Notification) {
    NSApplication.shared().unhide(self)
}

答案 2 :(得分:0)

我的2项迅捷5 / Xcode 10

注意:您也可以在ViewController中调用这些方法(如果有用),以防止在NASWindow / NSView-Controllers之间拆分代码。 在这种情况下:

internalLink

...

class ViewController: NSViewController, **NSWindowDelegate**
{

...

不愿意通过自我.. :(与上述其他人一样。)

override func viewWillAppear() {
    // we choose to delegate ourselves. must be done here, in viewDidLoad window is nil
    let window = self.view.window
    window!.delegate = self
}