SwiftUI:从json解析的对象分配绑定变量

问题描述 投票:0回答:2

我正在尝试分配一个我从JSON提取并解析的值到另一个视图。

struct ContentView: View {
    @State private var showAlert = false
    @State private var showAbout = false
    @State private var showModal = false
    @State private var title = "hi"

    @State private var isCodeSelectorPresented = false

    @ObservedObject var fetch = FetchNovitads()



    var body: some View {
        VStack {
            NavigationView {
                List(fetch.Novitadss) { Novitads in
                    VStack(alignment: .leading) {
                        // 3.

                        Text(Novitads.name!.de)
                            .platformFont()
                            .fontWeight(.black)

                        Text(Novitads.textTeaser.de)
                            .platformFont()
                            .fontWeight(.medium)
                            .onTapGesture {
                                self.showModal.toggle()
                                // 3.
                            }.sheet(isPresented: self.$showModal) {
                                ModalView(showModal: self.$showModal,
                                          title: self.$title)
                            }

在此示例代码中,标题(定义为“ hi”)正确传递。但是我要做的是将Novitads.name!.de的值分配给title变量,以便我可以在模式视图中使用它。

swift swiftui
2个回答
1
投票

尝试这样分配标题:

struct ContentView: View {

struct ContentView: View {
@State private var showAlert = false
@State private var showAbout = false
@State private var showModal = false
@State private var title = "hi"

@State private var isCodeSelectorPresented = false
@ObservedObject var fetch = FetchNovitads()

    var body: some View {
        VStack {
            NavigationView {
                List(fetch.Novitadss) { Novitads in
                    VStack(alignment: .leading) {
                        // 3.

                        Text(Novitads.name!.de)
                            .platformFont()
                            .fontWeight(.black)

                        Text(Novitads.textTeaser.de)
                            .platformFont()
                            .fontWeight(.medium)
                            .onTapGesture {
                                self.showModal.toggle()
                                // 3.
                        }.sheet(isPresented: self.$showModal) {
                            ModalView(showModal: self.$showModal, title: self.$title)
                        }
                    }
                }
            }
        }.onAppear(perform:{ self.title = self.fetch.Novitads.name!.de })
    }

0
投票

我只在ModalView Text("(String(title))")中显示self。$ title。>

然后,您不需要在这里绑定并直接传递值,例如

ModalView(showModal: self.$showModal, title: Novitads.name!.de)

和您的ModalView声明为

struct ModalView: View {
    @Binding showModal: Bool
    let title: String

    /// .. all other your code
}

注意:@State private var title = "hi"可以全部删除

© www.soinside.com 2019 - 2024. All rights reserved.