如何处理swiftui@State可选展开

如何处理swiftui@State可选展开,swiftui,state,optional,Swiftui,State,Optional,在swiftui中,我有一个状态变量count,它是可选的,在当前的工作表中,我打开可选的并显示Detailview,但它似乎从未在那里出现过 你知道为什么不去那里吗 它似乎从来没有击中 DetailView(计数:num) 问题不是可选的展开。 问题在于,在计算主体时,您正在执行更新以计数。要克服此问题,请使用我的解决方案: 如果该解决方案不适用于您,请告诉我 如果您真的必须使用@State var count,您可以使用此变通方法(不推荐) Di

在swiftui中,我有一个状态变量count,它是可选的,在当前的工作表中,我打开可选的并显示Detailview,但它似乎从未在那里出现过

你知道为什么不去那里吗

它似乎从来没有击中

DetailView(计数:num)


问题不是可选的展开。 问题在于,在计算主体时,您正在执行更新以计数。要克服此问题,请使用我的解决方案:

如果该解决方案不适用于您,请告诉我

如果您真的必须使用@State var count,您可以使用此变通方法(不推荐)

                      DispatchQueue.main.async {
                        self.count = 5
                    }
您可以使用
工作表(项目:内容:)
而不是
工作表(显示:内容:)

请注意,
必须符合
可识别
,因此您需要使用自己的结构或创建一个
Int
扩展:

extension Int: Identifiable {
    public var id: Int { self }
}
struct ContentView: View {
    @State var count: Int?
    var testArr = [1, 2, 3, 4, 5]

    var body: some View {
        NavigationView {
            List(testArr.indices) { index in
                Text("row num \(index)")
                    .onTapGesture {
                        self.count = 5
                    }
            }
            .sheet(item: $count) { count in
                DetailView(count: count)
            }
            .navigationBarTitle("Your Reading")
        }
    }
}
extension Int: Identifiable {
    public var id: Int { self }
}