ShareLink works fine except for save image action which dismiss the presenting view
first time system shows the premission alert so image get saved without any problem but for the next saves image get saved then share sheet dismiss and also presenting view dismiss as well
here is a sample code
`
internal import System
import UniformTypeIdentifiers
import SwiftUI
struct RootView: View {
@State private var isPresented: Bool = false
var body: some View {
ZStack {
Color.white
Button("Show parent view") {
isPresented = true
}
}
.sheet(isPresented: $isPresented) {
ParentView()
}
}
}
struct ParentView: View {
@State private var isPresented: Bool = false
var body: some View {
NavigationStack {
ZStack {
Color.red.opacity(0.5)
}
.toolbar {
ToolbarItem() {
let name = "\(UUID().uuidString)"
let image = UIImage(named: "after")!
return ShareLink(
item: ShareableImage(image: image, fileName: name),
preview: SharePreview(
name,
image: Image(uiImage: image)
)
) {
Image(uiImage: UIImage(resource: .Icons.share24))
.resizable()
.foregroundStyle(Color.black)
.frame(width: 24, height: 24)
}
}
}
}
}
}
struct ShareableImage: Transferable {
let image: UIImage
let fileName: String
static var transferRepresentation: some TransferRepresentation {
FileRepresentation(exportedContentType: .png) { item in
let fileURL = FileManager.default.temporaryDirectory
.appendingPathComponent(item.fileName)
.appendingPathExtension("png")
guard let data = item.image.pngData() else {
throw NSError(domain: "ImageEncodingError", code: 0)
}
try data.write(to: fileURL)
return SentTransferredFile(fileURL)
}
}
}
`
Let’s focus this discussion on your other thread.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"