【问题标题】:How to add something to a favorite list in SwiftUI?如何在 SwiftUI 中将内容添加到收藏列表?
【发布时间】:2020-05-08 18:21:37
【问题描述】:

我正在尝试创建一个收藏夹列表,我可以在其中添加不同的项目,但它不起作用。我做了一个简单的代码来告诉你发生了什么。

// 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】:

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

    改成

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

    会好的。

    谢谢,X_X

    【讨论】:

    • 我明白你的意思,这是有道理的,因为我在 FavoriteView 中创建了另一个未链接到 ContentView 的 FavoriteItems 实例。
    • 主要问题是我需要使用 coredata 在 FavoriteView 中添加、保存和删除项目,我发现主要问题是在我的 ContentView 中将 FavoriteView 作为 NavigationLink 访问,所以我将它分配给另一个我的 tabBar 中的 tabItem 并且完美运行 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多