Представление коллекции в представлении таблицы - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть следующая реализация в приложении, где есть табличное представление, где каждая ячейка табличного представления содержит представление коллекции.

enter image description here

Здесь количество ячеек в представлении коллекции будет зависеть от данных в ячейке табличного представления и будет различным для каждой строки. Например, в 1-м ряду 3 карты, во 2-м ряду 1 и в 3-м ряду 2.

Проблема в том, что я получаю 3 ячейки представления коллекции вместо 1 во второй ячейке.

Представление таблицы

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.groupedJobIds.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if let cell = tableView.dequeueReusableCell(withIdentifier: JobTableViewCellCollection.CellReuseIdentifier) as? JobTableViewCellCollection {
        var jobIds = self.groupedJobIds[indexPath.row]
        cell.delegate = self
        if jobIds != [] {
            cell.bindJobs(jobIds)
        }
        return cell
    }
    return UITableViewCell()
}

Ячейка таблицы / Сборник

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return self.jobIds.count  //It returns 1
}

//This method is called 3 times
func collectionView(_ collectionView: UICollectionView,
                    cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: JobCollectionViewCell.CellReuseIdentifier, for: indexPath) as? JobCollectionViewCell
    cell?.delegate = self
    cell?.bindJob(jobId)
    return cell!
}

Как видите, первый метод возвращает 1 как numberOfItemsInSection. Но второй метод вызывается 3 раза. Я что-то упустил?

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Вы должны заполнить ваш UICollectionView из правильного источника. В вашем коде вы заполняете все ячейки представления вашей коллекции из одного и того же self.groupedJobIds. Вам следует либо заполнить представление вашей коллекции из связанных идентификаторов ячеек табличного представления, либо сохранить массив групп JobId в UIViewController и заполнить их оттуда.

0 голосов
/ 10 сентября 2018

Я нашел решение для этого. Я пропустил reloadData () в представлении коллекции, которое вызывало проблему

0 голосов
/ 03 сентября 2018

Я думаю, что вы используете dequeueReusableCell метод табличного представления, который вызывает проблему. Можете ли вы попробовать новый вид коллекции при просмотре таблицы каждый раз при загрузке?

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