我已经为Mac桌面创建了一个应用程序,它正在工作,但苹果拒绝了它,因为当我们运行应用程序并使用“X”关闭它时,我们不能重新打开它从码头虽然应用程序图标仍然存在,但它不打开应用程序再次和主要问题,我挣扎的是,“如果我们关闭应用程序,然后在菜单栏中没有打开它的选项”我看到的其他App都是这样做的。我该怎么办?
eulz3vhy1#
以下是Swift 3的答案:符合视图控制器类中的NSWindowDelegate。然后,覆写下列方法,隐藏 windows ,而不是关闭它。
self.view.window?.delegate = self func windowShouldClose(_ sender: Any) -> Bool { NSApplication.shared().hide(self) return false }
字符串然后在停靠栏中单击应用程序图标时取消隐藏该应用程序。
func applicationDidBecomeActive(_ notification: Notification) { NSApplication.shared().unhide(self) }
型
acruukt92#
要实现红色(x)按钮的简单显示/隐藏功能,也可以让您的App Delegate类成为主窗口的窗口代理。然后向其中添加以下代码:
- (BOOL)windowShouldClose:(id)sender { [[NSApplication sharedApplication] hide:self]; return NO; } - (void)applicationDidBecomeActive:(NSNotification *)notification { [[NSApplication sharedApplication] unhide:self]; }
字符串
ddhy6vgd3#
我的两个证书Swift 5/Xcode 10注意:你也可以在ViewController中调用这些方法(如果有用的话)来防止在NASWindow/NSView-Controllers之间分割代码。在这种情况下:
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 }
型...没有必要通过自我..:(就像上面的其他人一样。
func windowShouldClose(_ sender: NSWindow) -> Bool { NSApplication.shared.hide(nil) return false // prevent closing. } func applicationDidBecomeActive(_ notification: Notification) { NSApplication.shared.unhide(nil) }
5f0d552i4#
答案很晚,但这就是我要做的。首先,你应该为你的主窗口创建一个类,这样你就不必为每个控制器实现windowShouldClose。
windowShouldClose
class BaseWindowController: NSWindowController, NSWindowDelegate { override func windowDidLoad() { super.windowDidLoad() contentViewController?.view.window?.delegate = self } func windowShouldClose(_ sender: NSWindow) -> Bool { NSApplication.shared.hide(nil) return false } }
字符串那么在Appdelegate中,应该像这样实现applicationDidBecomeActive
Appdelegate
applicationDidBecomeActive
func applicationDidBecomeActive(_ notification: Notification) { NSApplication.shared.unhide(nil) }
型这是现在你将永远可以重新打开你的窗口。
4条答案
按热度按时间eulz3vhy1#
以下是Swift 3的答案:
符合视图控制器类中的NSWindowDelegate。然后,覆写下列方法,隐藏 windows ,而不是关闭它。
字符串
然后在停靠栏中单击应用程序图标时取消隐藏该应用程序。
型
acruukt92#
要实现红色(x)按钮的简单显示/隐藏功能,也可以让您的App Delegate类成为主窗口的窗口代理。
然后向其中添加以下代码:
字符串
ddhy6vgd3#
我的两个证书Swift 5/Xcode 10
注意:你也可以在ViewController中调用这些方法(如果有用的话)来防止在NASWindow/NSView-Controllers之间分割代码。在这种情况下:
字符串
...
型
...
没有必要通过自我..:(就像上面的其他人一样。
型
5f0d552i4#
答案很晚,但这就是我要做的。
首先,你应该为你的主窗口创建一个类,这样你就不必为每个控制器实现
windowShouldClose
。字符串
那么在
Appdelegate
中,应该像这样实现applicationDidBecomeActive
型
这是现在你将永远可以重新打开你的窗口。