SwiftUI - ActionSheet / ShareSheet 导致 'windows' 在 iOS 15.0 中被弃用
SwiftUI - ActionSheet / ShareSheet leads to 'windows' was deprecated in iOS 15.0
我正在使用以下通过按钮触发的代码在我的应用程序中显示分享 sheet:
func shareSheet() {
guard let urlShare = URL(string: "https://google.com") else { return }
let activityVC = UIActivityViewController(activityItems: [urlShare], applicationActivities: nil)
UIApplication.shared.windows.first?.rootViewController?.present(activityVC, animated: true, completion: nil)
}
此代码引发警告:
'windows' 在 iOS 15.0 中被弃用:在相关的 window 场景中使用 UIWindowScene.windows 代替
我不明白如何摆脱它。已经检查了此处建议的方法 ,但它不起作用。我有什么想法可以绕过警告吗?
非常感谢!
您可以使用以下方式 UIApplication.shared.currentUIWindow()?.rootViewController
public extension UIApplication {
func currentUIWindow() -> UIWindow? {
let connectedScenes = UIApplication.shared.connectedScenes
.filter({
[=10=].activationState == .foregroundActive})
.compactMap({[=10=] as? UIWindowScene})
let window = connectedScenes.first?
.windows
.first { [=10=].isKeyWindow }
return window
}
}
我正在使用以下通过按钮触发的代码在我的应用程序中显示分享 sheet:
func shareSheet() {
guard let urlShare = URL(string: "https://google.com") else { return }
let activityVC = UIActivityViewController(activityItems: [urlShare], applicationActivities: nil)
UIApplication.shared.windows.first?.rootViewController?.present(activityVC, animated: true, completion: nil)
}
此代码引发警告:
'windows' 在 iOS 15.0 中被弃用:在相关的 window 场景中使用 UIWindowScene.windows 代替
我不明白如何摆脱它。已经检查了此处建议的方法
非常感谢!
您可以使用以下方式 UIApplication.shared.currentUIWindow()?.rootViewController
public extension UIApplication {
func currentUIWindow() -> UIWindow? {
let connectedScenes = UIApplication.shared.connectedScenes
.filter({
[=10=].activationState == .foregroundActive})
.compactMap({[=10=] as? UIWindowScene})
let window = connectedScenes.first?
.windows
.first { [=10=].isKeyWindow }
return window
}
}