установить изображение для imageview в uicollectionview, которое находится в uitableviewcell xib - PullRequest
0 голосов
/ 09 марта 2020

Я взял UITableView и снял UITableViewCell XIB и установил в нем данные для метки; также у меня есть UICollectionView в UITableViewCell XIB, в котором я должен установить изображения в UICollectionViewCell.

UIImageView находится в UICollectionViewCell, а соответствующий UICollectionView находится в UITableViewCell, так как установить для этого изображения UIImageView?

также имеет функцию делегата tableview в один файл

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "discoveryTableViewCell", for: indexPath) as! discoveryTableViewCell
    let data = discoverData[indexPath.row]
    cell.messageLbl.text = (data["content"] as! String)

    // This how normally image is set in tableview, how to do with collectionview
    cell.userImage.pin_updateWithProgress = true
    let riderImage = URL(string: (data["profile_pic"] as! String))
    cell.userImage.pin_setImage(from: riderImage, placeholderImage: nil, completion: nil)
    return cell
}

функция делегата представления коллекции в UITableViewCell.

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

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "discoverCell", for: indexPath as IndexPath) as! discoverCollectionViewCell
    cell.postImage.backgroundColor = .cyan
    return cell
}

Вот изображение того, как выглядит желтое поле UICollectionView и окно голубого цвета UIImageView.

enter image description here

1 Ответ

1 голос
/ 09 марта 2020

In cellForRowAt indexPath:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "discoveryTableViewCell", for: indexPath) as! discoveryTableViewCell
    if let data = discoverData[indexPath.row] as? [String: Any] {
        cell.messageLbl.text = (data["content"] as! String)

        cell.data = data
    }
    return cell
}

В вашем "discoveryTableViewCell" (это должен быть "DiscoveryTableViewCell"):

var data: [String: Any] {
    didSet {
        collectionView.reloadData()
    }
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "discoverCell", for: indexPath as IndexPath) as! discoverCollectionViewCell

    if let profilePic = data["profile_pic"] as? String {
        let riderImage = URL(string: profilePic)
        cell.postImage.pin_setImage(from: riderImage, placeholderImage: nil, completion: nil)
    }

    return cell
}

Вы должны следовать надлежащему руководству по стилю и соглашениям по именованию в Свифте. Пожалуйста, проверьте этот URL для лучшего понимания:

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