【问题标题】:How to get notified when SwiftUI's ShareLink view is dismissed?如何在 SwiftUI 的 ShareLink 视图被关闭时收到通知?
【发布时间】:2023-02-01 10:02:36
【问题描述】:

在 iOS 16 中,什么时候可以使用ShareLink 呈现分享表。有没有办法在用户向下滑动或关闭此视图时收到通知?关闭共享表后需要做一些事情。

【问题讨论】:

  • 您是否尝试过在 ShareLink 视图上添加 onDisappear { }
  • @user1046037 这是一个很好的猜测。但是 onDisappear 实际上会在按下 ShareLink 后被调用。它与工作表消失与否无关。我猜 Apple 需要改进这里的逻辑。
  • 你能发布一些代码吗,总是发布最少的代码,以便其他人在同一页面上

标签: ios swift swiftui


【解决方案1】:

我也在为此苦苦挣扎。据我所知,ShareLink 还没有办法在关闭时运行代码。对我来说效果很好的是为 SwiftUI 改编 UIActivityViewController,然后在工作表中呈现共享视图。

struct ActivityViewController: UIViewControllerRepresentable {

    var activityItems: [Any]
    var applicationActivities: [UIActivity]? = nil

    func makeUIViewController(context: UIViewControllerRepresentableContext<ActivityViewController>) -> UIActivityViewController {
        let controller = UIActivityViewController(activityItems: activityItems, applicationActivities: applicationActivities)
        return controller
    }

    func updateUIViewController(_ uiViewController: UIActivityViewController, context: UIViewControllerRepresentableContext<ActivityViewController>) {}

}

用法:

Button(action: {
    presentShareSheet = true
}) {
    Text("Share Link")
}
.sheet(isPresented: $presentShareSheet, onDismiss: { 
    // Code to run on dismiss
}) {
    ActivityViewController(activityItems: ["Check out this link!", URL(string: "https://www.google.com")!])
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 2011-08-03
    相关资源
    最近更新 更多