我正在学习Swift和iOS开发!
我决定使用UICollectionView构建一个小应用程序。
所以我的问题是如何自定义UICollectionView Cell的行为。
这是我要完成的工作:
我有两个数组:
"temps": [
"Présent",
"Passé composé",
"Imparfait",
"Plus-que-parfait",
"Passé simple",
"Passé antérieur",
"Futur",
"Futur antérieur",
"Futur proche",
"Présent",
"Passé",
"Passé - forme alternative",
"Présent",
"Imparfait",
"Plus-que-parfait",
"Passé",
"Présent",
"Présent",
"Passé"
],
还有"list": [
"je suis",
"tu es",
"il est",
"nous sommes",
"vous êtes",
"ils sont",
"j'ai été",
"tu as été",
"il a été",
"nous avons été",
"vous avez été",
"ils ont été",
"j'étais",....]
等...
temps数组正在按预期方式呈现,但列表未呈现。
相反,我得到了:
这是我的UICollectionView方法:
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
var temps = [String]()
if let temp = verb {
temps = temp.temps
}
return temps.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell:IndicatifCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "indicatif", for: indexPath) as! IndicatifCollectionViewCell
cell.temp.text = verb?.temps[indexPath.row]
cell.je.text = verb?.list[indexPath.row]
cell.tu.text = verb?.list[indexPath.row]
cell.il.text = verb?.list[indexPath.row]
cell.nous.text = verb?.list[indexPath.row]
cell.vous.text = verb?.list[indexPath.row]
cell.ils.text = verb?.list[indexPath.row]
return cell
}
答案 0 :(得分:2)
我相信您希望在此处将列表项与temp数组项一起使用:这些是您的lsuta nd temp数组:
"temps": [
"Présent",
"Passé composé",
"Imparfait",
"Plus-que-parfait",
"Passé simple",
"Passé antérieur",
"Futur",
"Futur antérieur",
"Futur proche",
"Présent",
"Passé",
"Passé - forme alternative",
"Présent",
"Imparfait",
"Plus-que-parfait",
"Passé",
"Présent",
"Présent",
"Passé"
],
"list": [
"je suis",
"tu es",
"il est",
"nous sommes",
"vous êtes",
"ils sont",
"j'ai été",
"tu as été",
"il a été",
"nous avons été",
"vous avez été",
"ils ont été",
"j'étais",....
]
您希望这些数据在一个单元格内彼此平行。我将使结构类似:
"finalDictionary": {
"Présent" : [
"je suis",
"tu es",
"il est",
"nous sommes",
"vous êtes",
"ils sont",
],
"Passé composé" : [
"tu as été",
"il a été",
"nous avons été",
"vous avez été",
"ils ont été",
"j'étais"
]
"Imparfait": [
"ils sont",
"j'ai été",
"tu as été",
"il a été",
"nous avons été",
]
...
..
.
}
现在当然要在您的numberOfItemsInSection
中返回finalDictionary.allkeys().count
,并在cellForItemAtIndexPath
中将值设置为:
if let key:String = finalDictionary()[indexPath.row] {
cell.temp.text = key
cell.je.text = finalDictionary[key][0]
cell.tu.text = finalDictionary[key][1]
cell.il.text = finalDictionary[key][2]
cell.nous.text = finalDictionary[key][3]
cell.vous.text = finalDictionary[key][4]
cell.ils.text = finalDictionary[key][6]
}
答案 1 :(得分:0)
我做错了,最简单的方法是使用switch语句:
switch indexPath {
case [0, 0]:
cell.temp.text = temps[0]
cell.je.text = lists[0]
cell.tu.text = lists[1]
cell.il.text = lists[2]
cell.nous.text = lists[3]
cell.vous.text = lists[4]
cell.ils.text = lists[5]
default:
print("...")
}
等等。