Вложенный UICollectionView, возвращающий одинаковые значения для каждого раздела - Swift - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть UICollectionView, вложенный в UITableViewCell. Представление collection внутри каждого раздела tableviewcell должно возвращать разные данные в соответствии с разделом. Вот мой код:

ViewController.swift

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate {

  var categoryKeys: [String]?

  let network = MediaNetworking()

  @IBOutlet weak var tableView: UITableView!

  override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

// fetch data
    network.fetchMedia()

    tableView.delegate = self
    tableView.dataSource = self

    print("hello world")
  }


  func numberOfSections(in tableView: UITableView) -> Int {

    self.categoryKeys = network.categoryKeys

    return self.categoryKeys!.count
  }


  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
  }



  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! SectionTableViewCell

    cell.theArray = network.sharedArray
    cell.accessArray = network.accessArray

    cell.backgroundColor = .purple


    return cell
  }


  func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

    self.categoryKeys = network.categoryKeys

    return self.categoryKeys?[section]

  }


  func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 300
  }

}

SectionTableViewCell.swift

class SectionTableViewCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

  var categoryKeys: [String]?
  var theArray: [String: [Entity]]?
  var accessArray: [Entity]?

  @IBOutlet weak var collectionView: UICollectionView!

  override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code

    collectionView.delegate = self
    collectionView.dataSource = self

  }

  override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
  }


  func numberOfSections(in collectionView: UICollectionView) -> Int {

    return 1
  }

  func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    return accessArray!.count
  }

  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! MediaCollectionViewCell

    cell.artistLabel.text = accessArray![indexPath.row].name

    return cell

  }


  func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
    if kind == UICollectionView.elementKindSectionHeader {
      let sectionHeader = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "SectionHeaderView", for: indexPath) as! SectionHeaderView

      if indexPath.section < categoryKeys!.count {

        let category = categoryKeys![indexPath.section]
        sectionHeader.categoryLabel.text = category
      }
      return sectionHeader
    }

    return UICollectionReusableView()
  }


  func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    return CGSize(width: 400, height: 300)
  }

}

Сейчас все ячейки коллекционного представления возвращают одинаковые значения. Есть идеи о том, чего мне не хватает? ..

1 Ответ

0 голосов
/ 14 апреля 2020

Вы пытались вызвать collectionView.reloadData () после изменения массивов данных?

cell.theArray = network.sharedArray
cell.accessArray = network.accessArray
cell. collectionView.reloadData()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...