我有两个集合视图,一个显示名称,另一个显示相应人员的年龄。这些数据以" [["名称","年龄"],["名称":&#34]的形式存储在字典数组中;丹尼尔","年龄" :" 20"],["姓名":"杰克","年龄":" 20"]]。此数据来自CSV文件,因此第一个元素是标题。在collectionView中查看cellForItemAtIndexPath,我检查集合视图并提供行号的数据,如cell [indexPath.row] [" Name"]和cell2 [indexPath.row] [" Age&# 34]。但是,indexPath.row总是返回零,所以我只得到标题 -
如何解决此问题?这是我的代码 -
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 2
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if collectionView == self.nameCollectionView {
let nameCell = collectionView.dequeueReusableCellWithReuseIdentifier("NameCell", forIndexPath: indexPath) as! NameCell
nameCell.data.text = self.data?[indexPath.row]["Name"]
println(indexPath.row)
return nameCell
}
else{
let ageCell = collectionView.dequeueReusableCellWithReuseIdentifier("AgeCell", forIndexPath: indexPath) as! AgeCell
ageCell.data.text = self.data?[indexPath.row]["Age"]
return ageCell
}
}
答案 0 :(得分:4)
与您的代码相同,您只将numberOfItemsInSection
设置为1,那么您总是得到第0个索引。 make有动态值,例如return Array.count。
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.data.count // here you need to set dynamic count of array
}
<强>更新强>
如果您关注numberOfSectionsInCollectionView
,请将您的代码设为cellForRow
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if collectionView == self.nameCollectionView {
let nameCell = collectionView.dequeueReusableCellWithReuseIdentifier("NameCell", forIndexPath: indexPath) as! NameCell
nameCell.data.text = self.data?[indexPath.section]["Name"]
println(indexPath.section)
return nameCell
}
else{
let ageCell = collectionView.dequeueReusableCellWithReuseIdentifier("AgeCell", forIndexPath: indexPath) as! AgeCell
ageCell.data.text = self.data?[indexPath.section]["Age"]
return ageCell
}
}
答案 1 :(得分:1)
IndexPath是具有以下结构的属性
Indexpath {Section, Row}
。
因此,如果您希望数据位于两个不同的部分,其中包含一行,那么每个部分的indexpath.row将返回0,因为
对于节索引0 - Indexpath[0,0]
表示节索引0和行索引0的索引路径
对于节索引1 - Indexpath[1,0]
表示节索引1的索引路径和行索引0
希望可以让你明白。
答案 2 :(得分:0)
正如其他人所指出的那样,您告诉您的收藏视图,您在每个部分中始终有2个部分和1个项目。因此,集合视图将仅在每个部分中要求1个项目。因此,每个部分中只有一个项目(索引0)。
你说&#34;这些数据以表格形式存储在字典中......&#34;
是字典还是字典数组?字典是无序集合,因此不适合存储有序的项目集以供给集合视图或表视图。一系列词典 是合适的。根据您显示的数据和您的代码,您看起来有一系列字典。您应该编辑您的问题以明确这一点。
您的代码并没有多大意义。您有2个不同的集合视图,并且每个视图都显示不同的数据。您告诉您的集合视图您有2个部分但忽略部分编号并为这两个部分创建相同的数据。那里出了点问题。