在我的 macOS 应用程序中,我正在执行OAuth登录过程。
我通过自定义url接收到url中的代码,从而成功进行了身份验证,通过它我已经可以获取access_token。
我只需在ViewController
中单击一个按钮即可开始登录过程。
我登录的系统随后使用注册的自定义url方案进行回答,为我提供了随后必须用于通过access_token
请求获得POST
的代码。该access_token可以用来进行api调用。
我现在的问题是,由于缺乏有关如何实现其他技术的知识,我目前正在AppDelegate
函数application(_ application: NSApplication, open urls: [URL])
中执行所有后面的过程。
据我有限的理解,这是处理此问题的方法,但现在 我如何从那里回来掌握当前视图?我真的在为视图控制器生命周期中的部分内容而苦苦挣扎...
答案 0 :(得分:2)
在AppDelegate中,您可以按以下方式获取对当前窗口的ViewController的引用。将“ MainViewController”替换为您使用的名称。
iOS Swift:
if let vc = window?.rootViewController as? MainViewController {
// use `vc` here by calling public functions
// and accessing public properties
}
macOS Swift:
if let vc = NSApplication.shared.mainWindow?.contentViewController as? MainViewController {
// use `vc` here by calling public functions
// and accessing public properties
}
答案 1 :(得分:0)
好的,找到它了:由于在macOS-land中没有与iOS一样的rootViewController,因此它的工作方式略有不同:
在macOS中,您可以像这样在“键盘下”掌握当前窗口:
在application(_:open:)
中,其中redirect_uri
被调用:
if let viewController = NSApplication.shared.keyWindow?.contentViewController as? ViewController {
// make changes to the view
}