ios - 在 SwiftUI 中运行时创建控件

标签 ios swiftui

以下代码在运行时每次按下按钮时都会创建新控件,问题是选择器选择设置为相同状态。
如何创建具有不同状态变量的新控件,以便它们可以单独操作?

struct ContentView: View {

   @State private var numberOfControlls = 0
   @State var selection: String="1"
    
    var body: some View {

        
        
      VStack {
          Button(action: {
              self.numberOfControlls += 1
          }) {
              Text("Tap to add")
          }

          ForEach(0 ..< numberOfControlls, id: \.self) { _ in
            
            Picker(selection: self.$selection, label: 
                Text("Picker") {

                Text("1").tag(1)
                Text("2").tag(2)
             }

         
          }
       }
        
    }
}

最佳答案

How can I create new controls with different state variables so they can operate separately ?


将控件分离到具有自己状态的独立 View 中(或在需要时查看模型)。
这是一个演示:
struct ContentView: View {

   @State private var numberOfControlls = 0

    var body: some View {
      VStack {
          Button(action: {
              self.numberOfControlls += 1
          }) {
              Text("Tap to add")
          }

          ForEach(0 ..< numberOfControlls, id: \.self) { _ in
            ControlView()
          }
       }
    }
}

struct ControlView: View {
   @State var selection: String="1"
    var body: some View {
        Picker(selection: self.$selection, label:
            Text("Picker")) {

            Text("1").tag(1)
            Text("2").tag(2)
         }
    }
}

关于ios - 在 SwiftUI 中运行时创建控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63448628/

相关文章:

swift - 在 ZStack 中对齐对象

ios - "setup iad network"是否意味着我不需要写广告。支持代码?

ios - 如何在 SwiftUI 列表/ForEach 中动态创建部分并避免 "Unable to infer complex closure return type"

swift - 如何在 swiftUI 中添加返回用户位置按钮?

ios - 如何在 iOS 中以编程方式设置日期和时间

firebase - 当一个函数需要前一个函数的值时,用于 Firebase 实时数据库查找的完成处理程序

ios - 使用 Bool 通过 SwiftUI 动态过滤 @FetchRequest - 显示 true、false 或两者

ios - Swift - 如何在键盘抬起时滚动 collectionView 的内容

ios - 将 View Controller 从右更改为左(希伯来语),

ios - 在 Swift 中使用图像时内存泄漏?