Как настроить поведение элементов UICollectionView Cell? - PullRequest
1 голос
/ 17 апреля 2019

Я изучаю 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é"
],

И "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",....] и т. Д. *

Массив temp рендерится так, как ожидалось, а список нет.

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

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


}

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

Полагаю, вы хотите, чтобы элементы списка наряду с элементами временного массива находились здесь: а это ваш 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]
}
0 голосов
/ 27 апреля 2019

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

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...