macos - 在启动 Mac 应用程序时选择 Windows

标签 macos cocoa window

我有一个 Login.xib 和一个 Main.xib,如果您登录一次,我会将 token 存储到文件中。 如果带有 token 的此文件存在,我想显示主窗口而不是登录,因为我已经知道它是哪个用户。

我可以在哪里以及如何决定应该显示哪个窗口?

最佳答案

我将检查您的应用程序委托(delegate) applicationDidFinishLaunching: 方法中是否存在此文件。

如果文件存在则显示主窗口,否则显示登录窗口。

编辑

为了回复您的评论,您需要研究 NSWindowController 的使用类(class)。基本上,您想要控制的每个窗口都会有一个 NSWindowController 对象。

您还需要更改应用程序中的一些内容,以更改加载主窗口的默认行为,这将根据您是否正在制作基于文档的应用程序而有所不同。

如果您的应用程序不是基于文档的,您的应用程序“知道”加载 main.xib,因为这是在应用程序的 info.plist 文件中设置的。基本上,当您的应用程序启动时,它会在 info.plist 文件中查找以找出需要加载的 Nib 并加载它。通常,主 Nib 包含一个菜单和一个窗口。只需删除该窗口并在单独的 Nib 中重新创建它即可默认停止加载窗口。

如果您的应用程序是基于文档的,那么情况会有所不同。您将有一个 NSDocument 子类,它应该有一个名为 windowNibName 的方法,该方法返回要加载的 nib 文件的名称。删除此方法并重写 makeWindowControllers 以返回您的 NSWindowController 对象。 还有更多的事情,但是 this应该让您开始,其余的超出了您原来问题的范围。

关于macos - 在启动 Mac 应用程序时选择 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726096/

相关文章:

ios - 哪里有对 iOS 和 Mac OS X 网络错误(如 kCFStreamErrorDomainSSL)的清晰、完整的引用?

ruby-on-rails - 如何在 Mac OSX 上安装 PCRE 开发头文件

cocoa - 可变形属性的奇怪警告

objective-c - ios 委托(delegate)默认为什么

python - 在 Python 中找到最匹配的 block /补丁

c++ - 在 Qt 中集中跟踪打开和关闭的窗口

xcode - 如何使用 osascript 在 SwiftUI 中以管理员权限运行 shell 脚本

objective-c - 仅当应用程序处于事件状态时才显示 NSStatusItem 菜单

java - 防止调整窗口大小

ios - OS X Cocoa 颜色组合框