[英]Working with TableViews and CollectionViews and managing multiple data sources in Swift
我有一個主 ViewController, MainViewController
包含許多視圖和一個TableView
。
每行(即tableViewCell
)包含來自不同來源/視圖等的不同內容。 tableViewCell
的許多行又包含一個名為SettingsCollectionView
的CollectionView
。 在tableView
的cellForRowAt
方法中,我初始化了該tableViewCell
的SettingsCollectionView
並將CollectionView
子類用作其數據源的相應數據傳遞給它。 例如:
tableView
第 0 行 - 包含通用內容
tableView
第 1 行 - settingsCollectionViewA : SettingsCollectionView
以及一個結構OriginalDataA
tableView
第 2 行 - 包含通用內容
tableView
第 3 行 - settingsCollectionViewB : SettingsCollectionView
以及一個結構OriginalDataB
tableView
第 4 行 - settingsCollectionViewC : SettingsCollectionView
以及一個結構OriginalDataC
tableView
第 5 行 - 包含通用內容
當我用OriginalDataA
初始化settingsCollectionViewA
時,我在CollectionView
中有一個 setter,然后在LocalDataA
下設置本地數據。 這使我能夠根據用戶進行的更改等確保我擁有數據的原始副本和工作副本。每當我從MainViewController
調用OriginalDataA
變量時, settingsCollectionViewA
中的 getter 都會對數據進行一些清理等,所以我然后可以在MainViewController
使用它做我想做的事情。
這部分一切正常,除非那些 tableView 單元格出列,當它們重新出現時,我會恢復該tableViewCell
的原始狀態,然后是 collectionView 而不是用戶留下的狀態。
我意識到這是因為每個SettingsCollectionView
類都在使用自己的OriginalDataA
、 OriginalDataB
等本地副本,並且很感激我可以只更新原始數據,但這會產生其他復雜性 - 例如為SettingsCollectionView
子類構建的當前“獨立”代碼的清潔度以及原始數據與更新數據的復雜性。 這就是為什么我堅持使用更好的編程方法......
抱歉,這似乎是一個基本問題,但我是編程和所有示例等的新手。我發現所有這些都涉及更簡單的場景,而不是我想要做的事情。
我沒有包含代碼,因為它有很多其他的內容和功能,我認為這些內容和功能只會混淆上面概述的概念。
任何幫助將不勝感激。
考慮您有SettingsCollectionViewA顯示originalDataA 。 CollectionView 顯示您在 cellforrowatindex 方法中提供的數據。 集合視圖單元每次都重用內存。 在任何時間點都只有可見的單元格留在內存中。 所以用戶修改的數據不會被顯式存儲,除非你修改了 originalDataA。
創建一個包含每個數據結構的類:
class MyDataModel {
var dataA: DataA
var dataB: DataB
var dataC: DataC
}
然后創建一個MyDataModel
實例並在視圖控制器的屬性中保存對它的引用。 將此相同的實例傳遞給您的表格視圖單元格。 由於它是一個類,因此是一個引用類型,因此單元格所做的更改實際上將在此實例中進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.