ios - 网络请求后 SwiftUI 更新 Elements.count

标签 ios swift swiftui swift5

我想用列更新自定义列表。

struct XyzView: View {
  @ObservedObject var networkManager: NetworkManager = NetworkManager()
  @State var maxrow : Int = 1

init() {
    maxrow = self.maxRow()
}

func maxRow() -> Int {
    let a = self.networkManager.products.count
    return a
}

    var body: some View {
Text("\(maxrow) Elements")

}

}

问题是在网络请求后计数没有正确更新并重新加载 View 。

DispatchQueue.main.async {
  self.products = products
 }

如何更新 View 并将 maxrow 设置为当前的 products.count? 感谢帮助。

最佳答案

您在 body 中使用的 maxRow 没有得到更新。 您应该将 View 直接绑定(bind)到 products 而不是尝试复制它:

{
     @ObservedObject var networkManager = NetworkManager()

     var maxRow: Int { networkManager.products.count }

     var body: some View {
         Text("\(maxRow) Elements")
     } 
}

关于ios - 网络请求后 SwiftUI 更新 Elements.count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58997911/

相关文章:

swift - 使用 SwiftUI 组合刷新 token

iphone - iOS 核心数据 - 插入前如何检查

ios - 可伸缩的 UIImage 聊天气泡

ios - iOS SDK中的YouTube集成问题

ios - 我尝试在 Swift-SpriteKit 中移动 png 图像,它因错误而崩溃

ios - SwiftUI 如何给 Slider 一个最小值和最大值并在 Text 中显示它的值?

web-applications - 使用高级触摸控件编写移动 Web 应用程序

ios - Swift 中的模块化文本占位符 block

ios - 来自苹果的 APNS 警告,即使我没有在我的应用程序中使用 APNS

swift - 如何使用 SwiftUI 中的按钮从数组中删除项目?