Menambahkan UICollectionViews ke UITableViewCell khusus yang dilakukan melalui Xib

Saya terkejut mengetahui berapa banyak hambatan yang ada untuk mengimplementasikan UICollectionView di UITableViewCell. Oleh karena itu, tutorial ini ada di sini, saya harap ini menghemat banyak waktu.

Catatan: tutorial ini bukan untuk pemula. Diasumsikan bahwa Anda mengetahui tableViews dan membuat sel khusus dengan file xib.

Juga, saya tidak menjelaskan apa pun tentang komponen visual.

1) Tambahkan UICollectionView ke Xib TableViewCell Anda

  1. Seret UICollectionView ke TableViewCell Xib Anda
  2. Tambahkan Constrains
  3. Dan cari tahu bahwa Anda tidak dapat menambahkan CollectionViewCells ke UICollectionView yang baru ditambahkan :)

Ternyata Anda memerlukan file terpisah untuk menempatkan setiap sel tampilan koleksi yang ingin Anda tampilkan. (Ketika UICollectionView Anda ada dalam file Xib)

2) Tambahkan file UICollectionViewCell dan Xib ke proyek Anda

gambar

Anda dapat melakukan apa pun yang Anda inginkan di sel Xib Collection View Cell Anda (tambahkan label, gambar, dll.), Untuk keperluan tutorial ini kami tidak menyentuhnya di sini.

Pastikan Anda memberi sel Anda resuableIdentifier.

gambar

3) Pastikan kelas TableViewCell Anda memiliki protokol UICollectionView Data Source dan Delegate.

Langkah 1: Kembali ke file tableViewCells Xib Anda.

gambar

Langkah 2: Seret dari koleksi AndaLihat ke 'Pemilik File' dan pilih dataSource lalu delegasikan.

gambar

Langkah 3: Seret dari collectionView Anda ke kelas TableViewCell Anda dan buat IBOutlet

gambar

Langkah 4: Verifikasikan bahwa sumber data dan protokol Delegasi TableViewCell kelas UICollectionView Anda sesuai.

class TableViewCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource { @IBOutlet weak var collectionView: UICollectionView! override func awakeFromNib() { super.awakeFromNib() // Initialization code self.collectionView.dataSource = self self.collectionView.delegate = self self.collectionView.register(UINib.init(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "collectionViewID") } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 15 } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionViewID", for: indexPath as IndexPath) as! CollectionViewCell return cell } } 

Penjelasan Kode:

  1. Tambahkan UICollectionViewDelegate dan UICollectionViewDataSource ke deskripsi kelas
  2. Buat pengumpulan dataViewView dan delegasikan = sendiri di awakeFromXib
  3. Tambahkan fungsi numberOfItemsInSection
  4. Tambahkan fungsi cellForItemAt
  5. Buat sel dengan reuseIdentifier Anda sebagai sel khusus Anda.

Langkah-langkah pemecahan masalah:

  1. Apakah pengidentifikasi saya ditetapkan dan benar?
  2. Sudahkah saya menyeret dari collectionView saya ke Files Owner di file Xib Anda?

Jika Anda memiliki pertanyaan, tulis di komentar.

Jika ini membantu Anda atau akan membantu di masa depan, sukai.

Saya harap seseorang akan menghemat banyak waktu.

Source: https://habr.com/ru/post/id449478/


All Articles