#swiftui
Вопрос:
Я создаю простую кнопку «Поделиться», чтобы поделиться некоторыми текстами. Хотя таблица общих ресурсов работает, я получил неожиданные сообщения об ошибках в своей консоли. Я новичок, и я понятия не имею, следует ли мне беспокоиться о сообщении об ошибке. Пожалуйста, дайте мне знать, если есть лучшее решение для общей таблицы. Эти сообщения являются
2021-11-22 19:36:03.677822-0500 ZSV5_IDChange[8282:264096] [LayoutConstraints] Changing the translatesAutoresizingMaskIntoConstraints property of a UICollectionReusableView that is managed by a UICollectionView is not supported, and will result in incorrect self-sizing. View: lt;_UIActivityContentFooterView: 0x7feec8925ad0; baseClass = UICollectionReusableView; frame = (16 256; 358 52); layer = lt;CALayer: 0x6000038ec4c0gt;gt; 2021-11-22 19:36:03.688591-0500 ZSV5_IDChange[8282:264096] [default] -imageForImageDescriptor: can do IO please adopt -imageForDescriptor: for IO free drawing or -prepareImageForDescriptor: if IO is allowed. (This will become a fault soon.) 2021-11-22 19:36:03.859368-0500 ZSV5_IDChange[8282:264096] [UICollectionViewRecursion] cv == 0x7feec7065a00 Disabling recursion trigger logging
Кроме того, я получаю UIApplication.shared.windows устареет в iOS 15. Если это правда, я думаю, что будет разумнее использовать ShareSheet() вместо использования частной функции shareText(текст: строка). Пожалуйста, взгляните на мой код, прежде чем я усложню свой вопрос.
Ниже приведен мой простой код:
import Foundation import SwiftUI struct DataArray: Identifiable { let id: Int let cities: String let name1: String let name2: String let isFavorite: Bool } public struct ListDataArray { static let dot = [ DataArray(id: 1, cities: "Baltimore" name1: "John", name2: "Mike", isFavorite: False), DataArray(id: 2, cities: "Frederick"), name1: "Joe", name2: "Swift", isFavorite: False), DataArray(id: 3, cities: "Catonsville" name1: "Susan", name2: "Oliver", isFavorite: False), // There will be a lot of data ] } struct TestShareSheet3: View { var data: DataArray @State private var showShareSheet: Bool = false var body: some View { VStack { Button { self.showShareSheet.toggle() //shareText(text: "(data.cities)n(data.name1) - (data.name2)") } label: { Text("Share") .foregroundColor(.blue) .font(.title3) .padding() .background(Color.green) .cornerRadius(10) } .sheet(isPresented: self.$showShareSheet) { // On Dismiss } content: { ShareSheet(activityItems: ["(data.cities)n(data.name1) - (data.name2)"]) } } } // This function also has the same issue private func shareText(text: String) { let av = UIActivityViewController(activityItems: [text], applicationActivities: nil) UIApplication.shared.windows.first?.rootViewController?.present(av, animated: true, completion: nil) if UIDevice.current.userInterfaceIdiom == .pad { av.popoverPresentationController?.sourceView = UIApplication.shared.windows.first av.popoverPresentationController?.sourceRect = CGRect(x: UIScreen.main.bounds.width / 2.1, y: UIScreen.main.bounds.height / 1.3, width: 200, height: 200) } } } struct Test2_Previews: PreviewProvider { static var previews: some View { // Testing purposes TestShareSheet3(data: ListDataArray.dot[1]) } } struct ShareSheet: UIViewControllerRepresentable { typealias Callback = (_ activityType: UIActivity.ActivityType?, _ completed: Bool, _ returnedItems: [Any]?, _ error: Error?) -gt; Void let activityItems: [Any] let applicationActivities: [UIActivity]? = nil let excludedActivityTypes: [UIActivity.ActivityType]? = nil let callback: Callback? = nil func makeUIViewController(context: Context) -gt; UIActivityViewController { let controller = UIActivityViewController( activityItems: activityItems, applicationActivities: applicationActivities) controller.excludedActivityTypes = excludedActivityTypes controller.completionWithItemsHandler = callback return controller } func updateUIViewController(_ uiViewController: UIActivityViewController, context: Context) { } }