如何在 SwiftUI 中将内容添加到收藏列表?
Posted
技术标签:
【中文标题】如何在 SwiftUI 中将内容添加到收藏列表?【英文标题】:How to add something to a favorite list in 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])")
当我启动应用程序时,我可以转到收藏夹视图,但添加项目后我不能。 我的目标是将一个项目添加到收藏夹,并在我关闭应用程序后保存它
【问题讨论】:
【参考方案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 并且完美运行 :)以上是关于如何在 SwiftUI 中将内容添加到收藏列表?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI CoreData - 如何更新获取请求和列表
如何在 SwiftUI 中将滚动视图添加到屏幕的特定部分? [复制]