Я учусь Swift и iOS Dev!

Я решил создать небольшое приложение с UICollectionView.

Поэтому мой вопрос заключается в том, как настроить поведение ячейки UICollectionView.

Вот чего я пытаюсь достичь:

enter image description here

У меня два массива:

"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é"
],

И «список»: [ "Je Suis", "Туес", "Il Est", "нус сом", "Vous êtes", "Илс Сонт", "j'ai été", "tu as été", "il a été", "nous avons été", "vous avez été", "ils ont été", " J'étais " , .... ] и т.д ....

Массив temps выполняет рендеринг, как и ожидалось, а список - нет.

Вместо этого я получаю это:

enter image description here

Вот мои методы 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


}
1
madeny 17 Апр 2019 в 15:35

2 ответа

Лучший ответ

Я делал это неправильно, простой способ сделать это - использовать оператор 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("...")
    }

Скоро..

0
madeny 27 Апр 2019 в 16:31

Я полагаю, что вы хотите элементы списка наряду с элементами временного массива здесь: и это ваш lsuta nd временный массив:

"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]
}
2
rptwsthi 17 Апр 2019 в 13:36