问题标签 [swift5.4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 如何使用与@resultbuilder 结合来构建动态collectionview 列表?
我想在 UIKit 中使用@resultbuilder
并Combine
创建自己的反应式和声明式 UICollectionView 列表,类似于我们List {}
在 SwiftUI 中得到的。
为此,我正在使用结果构建器来创建这样的快照:
我还需要使用以下扩展传递ListItemGroup
给 SnapshotBuilder 并获取[ListItem]
我的List
班级看起来像这样:
我在我的 ViewControllers 中使用它,如下所示:
如您所见,我List
使用@Published var testItems
变量初始化 my 。在我的init()
func 中,我设置了一个订阅者并将它们存储在 中cancellables
,这样我就可以对更改做出反应。
如果我将一个项目添加到testItems
数组,则执行sink
回调以创建一个新快照并将它们应用于data
. 它有效,但我需要点击导航按钮两次,才能看到列表中的项目。两个问题:
- 为什么会发生这种情况,我该如何解决?(所以我只需点击一次按钮即可查看列表中的更改)
- 以及如何改进我的代码?(目前我总是创建一个新快照而不是扩展已经创建的快照)