我正在开发一个SwiftUI应用程序,它将显示来自Core数据库的多个条目。基本上,这类应用程序的XCode模板实现了什么。
我做了两个改变:
我将列表项视图的代码放入一个单独的文件中,(BookmarkableItemView
)
bookmarked
,我称之为BookmarkableItem
。
在我看来,显示项目列表的代码现在是:
List(bookmarkableItems) { item in
BookmarkableItemView(item: item)
}
在BookmarkableItemView
中,item属性是@ObservedObject
。
现在,我的BookmarkableItemView
还包含一个按钮,它应该在视图所代表的项上切换bookmarked
属性。一切都很好-这很简单。但现在我必须坚持改变..。
我可以想到以下两种解决方案:
(BookmarkableItem) -> Void
)传递给BookmarkableItemView
,然后在按下视图中的按钮时调用该操作,在我看来,后者是不可接受的。第一种解决方案有效。现在在bookmarkAction
中有一个BookmarkableItemView
属性,所以上面的代码如下所示:
List(bookmarkableItems) { item in
BookmarkableItemView(bookmarkAction: { toggleBookmark(item) }, item: item)
}
该操作由BookmarkableItemView
调用,因此调用toggleBookmark(_ item:)
方法。
但是不知怎么的,我觉得我遗漏了一些关于SwiftUI绑定的东西,这会使这个过程更容易吗?当子视图执行对数据模型的更改时,如何让我的父视图得到通知,以便我能够持久化它们?
发布于 2021-09-12 02:51:34
onDisappear
检查是否item.hasChanges
或者在item.hasChanges
上使用item.hasChanges
https://stackoverflow.com/questions/69150547
复制