swiftui - 将数组传递给另一个 View SwiftUI

标签 swiftui

我正在尝试将数组传递到另一个 View 。我想将数组模拟传递到操作条件 View 。

@State var simulation = [Any]()
                

我知道您看不到所有代码,但下面是如果按下按钮以显示操作条件 View 并在数组加载数据后传入数组的位置,我已检查以确保模拟数组确实具有值在通过之前就在其中,它确实如此。

.sheet(isPresented: $showingOperatingConditions) {
            OperatingConditionsView(threats: simulation)
        }

这是声明威胁的操作条件 View 。由于某种原因,每次加载 View 时数组都是空的。有人可以帮忙吗?

struct OperatingConditionsView: View {


    @State public var threats = [Any]()

}

最佳答案

正如评论所说,您希望将 OperatingConditionsViewthreats 更改为 @Binding。然后,您需要传入 $simulation$ (获取其绑定(bind))。

.sheet(isPresented: $showingOperatingConditions) {
    OperatingConditionsView(threats: $simulation) /// need a $ here
}
struct OperatingConditionsView: View {
    @Binding public var threats: [Any] /// don't initialize with default value
}

或者,如果您不需要更改威胁来自动更新模拟,则可以使用简单的非绑定(bind)属性,如 @Joakim Danielson's comment说。

.sheet(isPresented: $showingOperatingConditions) {
    OperatingConditionsView(threats: simulation)
}
struct OperatingConditionsView: View {
    public var threats: [Any]
}

关于swiftui - 将数组传递给另一个 View SwiftUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67559839/

相关文章:

ios - SwiftUI 中的 List 是否复用了类似于 UITableView 的单元格?

swift - 如何为该SwiftUI核心数据模型正确插入排序描述符?

Swiftui - 如何使用 Timer.scheduledTimer 每隔 n 秒应用一次 UiView

ios - SwiftUI 中默认展开的 List 或 OutlineGroup

ios - 使用 Xcode 11 时,SwiftUI View 以小窗口而不是全屏呈现

swiftui - SwiftUI 列表中的可编辑文本字段

swift - 如何在 SwiftUI 应用程序中保存和加载 ARWorldMap?

swiftui - 按按钮显示新 View Swiftui

swift - 理解 SwiftUI 中的@Binding

button - SwiftUI:调整文本大小以适合按钮