我实际上想要创建包含行和列的表,并使用UICollectionView执行此操作。问题是重新加载或更新collectionView以在我的表中添加或删除行。列和硬编码的i-e 4。
这就是我的表现;
从这里开始。 将故事板中的集合视图引用到我的viewController
@IBOutlet weak var collectionView: UICollectionView!
然后在“viewDidLoad”中。
self.collectionView.delegate = self
self.collectionView.dataSource = self
现在收到服务器的回复后。我正在更新我的数组,我从中获取要创建的行数。之后,这就是我重新加载collectionView的方式。
DispatchQueue.main.async
{
self.collectionView.collectionViewLayout.invalidateLayout()
self.collectionView.reloadData()
print("size of the array is(self.portfolioHandler.data.count)")
}
在我的numberOfSections函数中。我正在获得正确的细胞数量。也回来了。
func numberOfSections(in collectionView: UICollectionView) -> Int {
var toReturn : Int = 1
if (self.portfolioHandler != nil) {
let data : [PortfolioData] = self.portfolioHandler.data!
print("dataCount : \(data.count)")
toReturn = data.count + 1
print("toReturn : \(toReturn)")
}
return toReturn
}
使用日志我收到返回的号码。它是正确的并且正确地返回数据。
现在在我的cellForItem中索引函数。 IndexPath未更新。它仍然是我创造的顶级标题。它下面没有细胞。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) as! MyCollectionViewCell
print("section: \(indexPath.section) && row: \(indexPath.row)")
在我尝试的一切之后。没有什么能帮助我在我的collectionView中创建正确的单元格。
技巧可行。只有当我在numberOfSections中给出硬编码值时才开始。然后在服务器响应并重新加载collectionView之后,它将创建那些像上面硬编码的3或4个单元格。不仅如此。
但是我必须创建从服务器获得的单元格数量。动态的。
我花了很多时间。我帮我错了。或者我如何解决这个问题。
答案 0 :(得分:0)
经过一切尝试。我无法解决集合视图的这个重载问题。
但我通过这个技巧在我的应用程序中处理这个
集合视图第一次正确制作单元格。问题是重装。所以我在进入此View Controller之前在之前的View Controller中发出了我的服务器请求。并将响应发送到此View Controller。这条路。我有很多细胞要做。所以它奏效了。
但作为一名学习者,我期待着解决这个重载问题的答案和真正解决方案。
我会很感激。虽然感谢@ɯɐɹʞ的评论。