我实现了NSApplicationDelegate
方法func application(_ sender: NSApplication, openFile filename: String) -> Bool
来获取双击以启动我的macOS应用程序(Swift 4.x)的文件的名称。但是,似乎在ViewController viewDidLoad()
之后调用此方法,这是我的所有初始化代码发生的地方。有没有办法在viewDidLoad()
类中的ViewController
中获取文件名,以便我可以直接在初始化代码中使用文件名?
更新:
我现在能够根据Swift 4.2链接的建议将数据从AppDelegate
传递到ViewController
:
所以我的问题仍然是如何直接在ViewDidLoad()
中获取文件名,或者能够通过application(_, sender: NSApplication, openFile filename: String) -> Bool
获取名称,并在调用ViewController
时将其传递给ViewDidLoad()
。
解决了我的问题。我没有在ViewController
中执行我的初始化代码,而是在AppDelegate
applicationDidFinishLaunching
中实现了代码,以便在应用程序启动时和第一个事件发生之前执行初始化。我认为无论如何这对AppDelegate
处理应用程序初始化更合适。这个代码调整解决了在ViewController
和AppDelegate
之间传递数据的需要,以及在application(_, sender: NSApplication, openFile filename: String) -> Bool
之后调用ViewDidLoad()
的问题。