gpt4 book ai didi

swift - 如何确保新的 View Controller 对用户可见?

转载 作者:行者123 更新时间:2023-12-03 16:40:05 24 4
gpt4 key购买 nike

首先,启动后 3 秒将 native macOS 应用程序制作为附件类型应用程序(在应用程序进入系统菜单栏之前首先显示信息屏幕):

DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
NSApplication.shared.setActivationPolicy(.accessory)
}

它有一个状态栏菜单,其创建方式为:

class func createMenu(color: Bool) -> Void {
let statusBar = NSStatusBar.system
self.sharedInstance.storedStatusItem = statusBar.statusItem(withLength: NSStatusItem.variableLength)
self.sharedInstance.storedStatusItem.menu = ABCMenu.statusBarMenu()
}

用户在状态栏菜单中有多个选项可以使用控件打开不同的屏幕。其中之一显示为:

class func showServiceViewController() -> Void {

let storyboard = NSStoryboard(name: NSStoryboard.Name("Main"), bundle: Bundle.main)
guard let vc = storyboard.instantiateController(withIdentifier: "ABCServiceViewController") as? ABCServiceViewController, let checkedWindow = ABCUIManager.sharedInstance.window else {
return
}

checkedWindow.contentViewController = vc
checkedWindow.setIsVisible(true)
checkedWindow.orderFrontRegardless()
}

问题是有时选定的 View Controller 不会进入后台,并且必须在许多其他已打开的应用程序和窗口下找到。大多数时候它工作正常,但并非总是如此。

是否有更好的方法来确保新的 View Controller 始终提升到最高级别并向用户显示?

感谢您的任何建议。

最佳答案

我会在显示窗口之前激活应用程序(因为您有附件应用程序,所以默认情况下不会激活它,必须以编程方式完成)

   ...
NSApplication.shared.activate(ignoringOtherApps: true)

checkedWindow.contentViewController = vc
checkedWindow.setIsVisible(true)
checkedWindow.orderFrontRegardless()
}

关于swift - 如何确保新的 View Controller 对用户可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60080856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com