J'ai un inputView où un collectionView sera affiché. J'ai utilisé la mise en page automatique pour cette entréeView. Lors de l'exécution de l'application numberOfItemsInSection est appelée, mais cellForItemAt n'est pas appelée. Donc, aucune cellule ne s'affiche. Ai-je fait quelque chose de mal en utilisant la contrainte? J'ai aussi créé projet https://drive.google.com/file/d/0B5UHWsK1E6dSRDA5bmtSY2ZZbGs/viewcellForItemAt n'appelle pas dans collectionView
ViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
textField.inputView = InputPhotoView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 265))
textField.becomeFirstResponder()
}
InputPhotoView.swift
class InputPhotoView: UIView {
let CellIdentifier = "Cell"
override init(frame: CGRect) {
super.init(frame: frame)
collectionView.dataSource = self
collectionView.register(CustomCell.self, forCellWithReuseIdentifier: CellIdentifier)
setupViews()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("Not yet implented")
}
func setupViews() {
self.backgroundColor = UIColor.brown
self.addSubview(collectionView)
setupConstraints()
}
func setupConstraints() {
NSLayoutConstraint.activate([
collectionView.leadingAnchor.constraint(equalTo: self.trailingAnchor, constant: 50),
collectionView.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 0),
collectionView.topAnchor.constraint(equalTo: self.topAnchor, constant: 0),
collectionView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0)
])
}
public lazy var collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.itemSize = CGSize(width: 100, height: 100)
layout.minimumInteritemSpacing = 0
layout.sectionInset = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)
let collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: layout)
collectionView.translatesAutoresizingMaskIntoConstraints = false
collectionView.contentInset = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)
return collectionView
}()
} DataSource
extension InputPhotoView : UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
print("number of items")
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CellIdentifier, for: indexPath) as! CustomCell
return cell
}
}