UICollectionViewのdataSourceメソッドが発火しません。
storyboardは使っておらず、コードのみの実装です。
ViewController
1class ViewController: UIViewController { 2 3 private var contentCollectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewLayout()) 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 8 contentCollectionView.dataSource = self 9 contentCollectionView.register(ContentCollectionViewCell.self, forCellWithReuseIdentifier: "Cell") 10 11 let layout = UICollectionViewFlowLayout() 12 layout.itemSize = CGSize(width: screenWidth * 0.4, height: 60) 13 contentCollectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) 14 15 contentCollectionView.backgroundColor = .yellow 16 self.view.addSubview(contentCollectionView) 17 contentCollectionView.translatesAutoresizingMaskIntoConstraints = false 18 contentCollectionView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true 19 contentCollectionView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true 20 contentCollectionView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true 21 contentCollectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true 22 } 23} 24 25extension ViewController: UICollectionViewDataSource { 26 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 27 return 6 28 } 29 30 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 31 print("dataSorce method") 32 let cell = contentCollectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) 33 return cell 34 } 35}
ContentCollectionViewCell
1class ContentCollectionViewCell: UICollectionViewCell { 2 3 let titleLabel = UILabel() 4 let numberLabel = UILabel() 5 6 override func awakeFromNib() { 7 super.awakeFromNib() 8 } 9 10 override init(frame: CGRect) { 11 super.init(frame: frame) 12 print("cell init") 13 14 setupView() 15 } 16 17 required init?(coder: NSCoder) { 18 fatalError("init(coder:) has not been implemented") 19 } 20 21 func setupView() { 22 titleLabel.text = "default" 23 self.contentView.addSubview(titleLabel) 24 titleLabel.translatesAutoresizingMaskIntoConstraints = false 25 titleLabel.centerXAnchor.constraint(equalTo: self.contentView.centerXAnchor, constant: 0).isActive = true 26 titleLabel.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant: 10).isActive = true 27 28 numberLabel.text = "default" 29 self.contentView.addSubview(numberLabel) 30 numberLabel.translatesAutoresizingMaskIntoConstraints = false 31 numberLabel.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 3).isActive = true 32 numberLabel.leftAnchor.constraint(equalTo: self.contentView.leftAnchor, constant: 0).isActive = true 33 } 34}
・cellForItemAt内のprintと、カスタムセルのinit内のprintは実行されていない。
・dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)の
identifierを登録していない適当な文字列に変更してもエラーがおきない。
どこか見落としている箇所はありますか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/29 06:29