【发布时间】:2019-07-22 12:14:09
【问题描述】:
当我用这种方法从我的Today Extension 打开App 时:
open func open(_ URL: URL, completionHandler: ((Bool) -> Void)? = nil)
我的应用程序的生命周期是这样的:
- didFinishLaunchingWithOptions
- viewDidLoad(初始 ViewController)
- 打开网址
这让我很恼火,因为我想将我的 launchState 变量设置为 widget 并在我的 initial ViewController 中执行自定义逻辑,如果@ 987654326@方法是最后一个触发的。
我该如何处理这种情况?
编辑:
用户可以从 Today Extension 或 Classic 启动中打开应用。
在 rootViewController 的 viewDidLoad 中,我正在这样做:
fileprivate func prepareCityToLaunch() {
switch launchState {
case .widget:
launchCity.getWidgetCity()
case .classic:
launchCity.getLaunchCity()
}
}
这是一个枚举,默认设置为.classic,我在openURL方法中设置为.widget。
此方法返回适当的City 对象以请求感谢委托。
我不能等待来自openURL 的Notification,因为在这个viewController 中我还不知道应用程序是从Widget 还是从Classic 启动打开的,并且因为已设置launchState默认为classic,总是获取城市,就好像App以classic方式启动一样。
这就是为什么我想先在 openURL 方法中设置 launchState,然后在我的 viewDidLoad 中设置正确。
可以理解吗?
【问题讨论】:
标签: ios swift today-extension openurl