Создать UICollectiionViewCell на основе UIView - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь использовать UICollectionView, который содержит различные UIViews в качестве своих ячеек. Это возможно, или я должен сделать их UICollectionViewCells?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

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

Пример того, как вы можете создать ячейку, которая обёртывает UIView и более пригодна для повторного использования

class ProfileView: UIView {
    var imageView: UIImageView!
    var name: UILabel!
}

class ProfileCollectionViewCell: UICollectionViewCell {

     let profileView = ProfileView() 

     init() {
         super.init()
         configureConstraints()
     }

     func configureConstraints() {
        // use a handy extension you've already built
        contentView.addSubView(profileView)
        profileView.pinToEdges(of: contentView)
     }
}

func collectionView(_ collectionView: UICollectionView,
                        cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let row = self.objects[indexPath.row]
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "someId" for: indexPath) as? ProfileCollectionViewCell
    cell?.profileView.imageView.image = row["image"]
    cell?.profileView.name.text = row["name"]
    return cell
}

примечание: вам может потребоваться управлять «сбросом состояния ячеек», прежде чем оно будет снова использовано с чем-то вроде:

override prepareForReuse() {
    super.prepareForReuse() 

    profileView.imageView.image = nil
    profileView.name.text = ""
} 
0 голосов
/ 08 ноября 2018

Вы должны вернуть UICollectionViewCell с. UICollectionView не принимаю UIView с.

Что вы можете сделать, это создать общий UICollectionViewCell, который может встраивать любой UIView. Причина в том, что ячейки представления коллекции имеют определенный состав для макета и переработки.

Кроме того, вы добавляете дочерний элемент в UIView непосредственно в самом представлении, ячейки представления коллекции имеют contentView, например UITableViewCell s.

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