【发布时间】:2022-09-23 19:28:04
【问题描述】:
我在使用 Firebase 在 Swift/Swiftui 中获取 iOS 16 上的数据时遇到问题。当我单击按钮打开视图时,数据不会出现,直到我必须向下滑动并重新打开视图。它在 iOS 15 上运行良好,但在 iOS 16 上运行良好。感谢您的帮助。我还录制了一个视频来解释这个问题。这是我的代码:
获取数据的函数:
func QueryOrder() {
var query: Query!
let uid = Auth.auth().currentUser!.uid
query = dataBase.collection(\"Users\").whereField(\"uid\", isEqualTo: uid)
query.addSnapshotListener { (QuerySnapshot, error) in
guard let documents = QuerySnapshot?.documents else {
print(\"no document\")
return
}
self.orders = documents.map { (QueryDocumentSnapshot) -> Order_placed in
let data = QueryDocumentSnapshot.data()
let customer_name = data[\"customer_name\"] as? String ?? \"\"
let total = data[\"total\"] as? Double ?? 0
let order_id = data[\"order_id\"] as? String ?? \"\"
let code_for_delivery = data[\"code_for_delivery\"] as? String ?? \"\"
let customer_address = data[\"customer_address\"] as? String ?? \"\"
let customer_unit_type = data[\"customer_unit_type\"] as? String ?? \"\"
let customer_phone_number = data[\"customer_phone_number\"] as? Int ?? 0
let store_name = data[\"store_name\"] as? String ?? \"\"
let order_status = data[\"order_status\"] as? String ?? \"\"
return Order_placed(customer_name: customer_name, total: total, store_name: store_name, customer_address: customer_address, customer_phone_number: customer_phone_number, customer_unit_type: customer_unit_type, code_for_delivery: code_for_delivery, order_id: order_id, status: order_status)
}
}
}
这是我的看法:
ScrollView {
LazyVGrid(columns: items, spacing: 10) {
ForEach(StoreFirebase.orders) { item in
currentOrdersViewModel(item: item, showCard: $showCard, orderID: $orderID)
}
}
.navigationBarItems(trailing:
Button (action: {
self.presentationMode.wrappedValue.dismiss()
}){
ZStack {
Circle()
.fill(Color(white: colorScheme == .dark ? 0.19 : 0.93))
Image(systemName: \"xmark\")
.resizable()
.scaledToFit()
.font(Font.body.weight(.bold))
.scaleEffect(0.416)
.foregroundColor(Color(white: colorScheme == .dark ? 0.62 : 0.51))
}
}.frame(width: 40, height: 40)
)
}
.onAppear() {
self.StoreFirebase.QueryOrder()
}
这是视图模型的一部分:
@ObservedObject private var StoreFirebase = FirebaseViewModel()
var item: Order_placed
@State var ismodal = false
@State var color = \"\"
@Binding var showCard: Bool
@Binding var orderID: String
var body: some View {
let doubleStr = String(format: \"%.2f\", item.total)
ZStack {
Rectangle()
.foregroundColor(Color(red: 248 / 255, green: 248 / 255, blue: 255 / 255))
.cornerRadius(10)
.frame(minHeight: 50) // ,maxHeight: 240)
if item.status == \"Canceled\" {
Text(\"Status: \\(item.status)\")
.foregroundColor(Color.white)
.font(Font.system(.footnote, design: .default).weight(.semibold))
.padding(5)
.padding(.horizontal, 2)
.background(RoundedRectangle(cornerRadius: 14, style: .continuous)
.foregroundColor(Color.red.opacity(0.80))
.opacity(1), alignment: .center)
.position(x: 200, y: 0)
Spacer(minLength: 0)
} else {
Text(\"Status: \\(item.status)\")
.foregroundColor(Color.white)
.font(Font.system(.footnote, design: .default).weight(.semibold))
.padding(5)
.padding(.horizontal, 2)
.background(RoundedRectangle(cornerRadius: 14, style: .continuous)
.foregroundColor(Color.blue.opacity(0.80))
.opacity(0.55), alignment: .center)
.position(x: 200, y: 0)
Spacer(minLength: 0)
}
VStack (spacing: 10) {
HStack {
Text(\"Order ID :\")
.font(.system(size: 15, weight: .heavy))
Spacer(minLength: 0)
Text(item.order_id)
.font(.system(size: 15, design: .monospaced))
}.padding()
HStack {
Text(\"Code to give to your courier :\")
.font(.system(size: 15, weight: .heavy))
Spacer(minLength: 0)
if item.status != \"Courier is arrive\" {
Text(item.code_for_delivery)
.font(.system(size: 15, design: .monospaced))
.blur(radius: 5)
} else {
Text(item.code_for_delivery)
.font(.system(size: 15, design: .monospaced))
}
}.padding()
HStack {
Text(\"Need help with this order?\")
.font(.system(size: 15, weight: .heavy))
Spacer(minLength: 0)
Button(action: {
// sendMessage()
self.orderID = item.order_id
self.showCard = true
})
{
Text(\"Contact support\")
.font(.system(size: 16, weight: .semibold))
.foregroundColor(.red)
}
如果您想查看问题,这是视频的链接(无需下载的保管箱链接)
非常感谢您的帮助,我试图了解问题出在哪里,但我仍然不知道它在 iOS 15 上运行良好。
标签: swift firebase google-cloud-firestore swiftui ios16