Я строю кроссплатформенное приложение Swiftui (iOS + Mac Catalyst), которое позволяет пользователям выбирать файлы изображений, используя собственную Swiftui .fileimporter. На iOS все работает нормально - я получаю URL -адреса изображения от сборщика документов и перейду к следующему представлению. Похоже, что обработчик результатов не запускается должным образом, и я не могу получить выбранные URL -адреса изображения или ориентироваться на них. < /P>
.sheet(isPresented: $displayDocumentPicker) {
ImageFilePicker(onImagesPicked: { urls in
print("HomeView: Received \(urls.count) URLs from ImageFilePicker. First URL: \(urls.first?.lastPathComponent ?? "N/A")") //
showLoader = true
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
let localURLs = urls.compactMap { persistLocally($0) }
print("HomeView: After persistLocally, \(localURLs.count) local URLs. First local URL: \(localURLs.first?.lastPathComponent ?? "N/A")") //
if !localURLs.isEmpty {
pendingSelections.append(contentsOf: localURLs)
print("HomeView: pendingSelections count updated to \(pendingSelections.count)") //
showLoader = false
navigateToFormatView = true
print("HomeView: navigateToFormatView set to true. Navigating to FormatSelectionView.") //
} else {
print("HomeView: No local URLs were persisted. Not navigating.") //
showLoader = false
}
}
}, selectionLimit: 40)
}
#elseif os(macOS)
import AppKit
import UniformTypeIdentifiers
// SwiftUI is already imported at the top of the file, but it's good practice to include
// platform-specific imports within their #if blocks if they are only needed there.
// For NSViewControllerRepresentable, SwiftUI is necessary.
struct ImageFilePicker: NSViewControllerRepresentable {
var onImagesPicked: () -> Void
var selectionLimit: Int = 40
... r-in-macos
Я не смог получить URL -адреса с изображением от сборщика документов в MacOS ⇐ IOS
Программируем под IOS
1752825624
Anonymous
Я строю кроссплатформенное приложение Swiftui (iOS + Mac Catalyst), которое позволяет пользователям выбирать файлы изображений, используя собственную Swiftui .fileimporter. На iOS все работает нормально - я получаю URL -адреса изображения от сборщика документов и перейду к следующему представлению. Похоже, что обработчик результатов не запускается должным образом, и я не могу получить выбранные URL -адреса изображения или ориентироваться на них. < /P>
.sheet(isPresented: $displayDocumentPicker) {
ImageFilePicker(onImagesPicked: { urls in
print("HomeView: Received \(urls.count) URLs from ImageFilePicker. First URL: \(urls.first?.lastPathComponent ?? "N/A")") //
showLoader = true
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
let localURLs = urls.compactMap { persistLocally($0) }
print("HomeView: After persistLocally, \(localURLs.count) local URLs. First local URL: \(localURLs.first?.lastPathComponent ?? "N/A")") //
if !localURLs.isEmpty {
pendingSelections.append(contentsOf: localURLs)
print("HomeView: pendingSelections count updated to \(pendingSelections.count)") //
showLoader = false
navigateToFormatView = true
print("HomeView: navigateToFormatView set to true. Navigating to FormatSelectionView.") //
} else {
print("HomeView: No local URLs were persisted. Not navigating.") //
showLoader = false
}
}
}, selectionLimit: 40)
}
#elseif os(macOS)
import AppKit
import UniformTypeIdentifiers
// SwiftUI is already imported at the top of the file, but it's good practice to include
// platform-specific imports within their #if blocks if they are only needed there.
// For NSViewControllerRepresentable, SwiftUI is necessary.
struct ImageFilePicker: NSViewControllerRepresentable {
var onImagesPicked: ([URL]) -> Void
var selectionLimit: Int = 40
func makeNSViewController(context: Context) -> NSViewController {
let viewController = NSViewController()
DispatchQueue.main.async {
let panel = NSOpenPanel()
if #available(macOS 12.0, *) {
panel.allowedContentTypes = [
UTType.jpeg,
UTType.png,
UTType.heic,
UTType.gif,
UTType.tiff,
UTType.bmp,
UTType.webP
]
} else {
panel.allowedFileTypes = ["jpg", "jpeg", "png", "heic", "gif", "tiff", "bmp", "webp"]
}
panel.canChooseDirectories = false
panel.allowsMultipleSelection = true
if panel.runModal() == .OK {
let selected = Array(panel.urls.prefix(selectionLimit))
print("ImageFilePicker: Selected \(selected.count) URLs from NSOpenPanel. First URL: \(selected.first?.lastPathComponent ?? "N/A")") //
onImagesPicked(selected)
} else {
print("ImageFilePicker: NSOpenPanel cancelled or failed.") //
}
}
return viewController
}
func updateNSViewController(_ nsViewController: NSViewController, context: Context) {}
}
#endif
Подробнее здесь: [url]https://stackoverflow.com/questions/79705805/i-was-unable-to-get-images-urls-from-document-picker-in-macos[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия