2017-10-20 143 views
0

我有一个inputView将显示一个collectionView。我为那个inputView使用了自动布局。当运行app 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 
}() 

} 数据源

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 
} 

}

回答

0

您的代码存在约束冲突,因此collectionView不可见。尝试改变这一行:

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

为了这样的事情:

collectionView.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 50) 
相关问题