如何在SwiftUI中向喜欢的列表添加内容?

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

我正在尝试创建一个收藏夹列表,我可以在其中添加其他项,但是不起作用。我编写了一个简单的代码来向您显示发生了什么。

// BookData gets data from Json
struct BookData: Codable {
var titolo: String
var descrizione: String
}

class FavoriteItems: ObservableObject {
@Published var favItems: [String] = []
}

struct ContentView: View {
@ObservedObject var bookData = BookDataLoader()
@ObservedObject var favoriteItems = FavoriteItems()

var body: some View {
    NavigationView {
        List {
            NavigationLink(destination: FavoriteView()) {
                Text("Go to favorites")
            }
            ForEach(0 ..< bookData.booksData.count) { num in
                HStack {
                    Text("\(self.bookData.booksData[num].titolo)")

                    Button(action: {
                              self.favoriteItems.favItems.append(self.bookData.booksData[num].titolo)
                    }) {
                        Image(systemName: "heart")
                    }
                }
            }
        }
    }
}
}

struct FavoriteView: View {
@ObservedObject var favoriteItems = FavoriteItems()

var body: some View {
    List {
        ForEach (0 ..< favoriteItems.favItems.count) { num in
            Text("\(self.favoriteItems.favItems[num])")
        }
    }
}
}

启动应用程序后,我可以进入“收藏夹视图”,但是添加项目后,我无法进入。我的目的是将一个项目添加到“收藏夹”,并在我关闭该应用程序后将其保存。

swift list view swiftui
1个回答
0
投票

ContentView中的视图模型favoriteItems需要传递到FavoriteView中,因为添加新数据时需要引用favoriteItems来重新加载FavoriteView。

更改为

NavigationView(destination: FavoriteView(favoriteItems: favoriteItems)) @ObservedObject var favoriteItems: FavoriteItems

会没事的。

谢谢,X_X

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