2017-10-20 16 views
0

私はcollectionViewが表示されるinputViewを持っています。そのinputViewに自動レイアウトを使用しました。アプリケーションを実行すると、numberOfItemsInSectionが呼び出されますが、cellForItemAtは呼び出されません。したがって、セルは表示されません。私は制約を使って何か悪いことをしましたか? 私もプロジェクトhttps://drive.google.com/file/d/0B5UHWsK1E6dSRDA5bmtSY2ZZbGs/viewcellForItemAtが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 
} 

}

を作成しました10

答えて

0

コードに制約の競合があるため、collectionViewが表示されません。このようなものに

collectionView.leadingAnchor.constraint(equalTo: self.trailingAnchor, constant: 50) 

:この行を変更してみてください

collectionView.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 50) 
関連する問題