2017-10-20 3 views
0

Ich habe eine inputView, wo eine collectionView angezeigt wird. Ich habe das automatische Layout für diese Eingabeansicht verwendet. Beim Aufruf der App wird numberOfItemsInSection aufgerufen, aber cellForItemAt wird nicht aufgerufen. Also wird keine Zelle angezeigt. Habe ich etwas falsch gemacht, wenn ich die Beschränkung verwende? Ich habe auch Projekt https://drive.google.com/file/d/0B5UHWsK1E6dSRDA5bmtSY2ZZbGs/viewcellForItemAt ruft nicht in collectionView auf

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 
}() 

erstellt} 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 
} 

}

Antwort

0

Ihr Code enthält Constraint-Konflikte, sodass die CollectionView nicht sichtbar ist. Versuchen Sie, diese Zeile zu ändern:

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

Um so etwas wie dieses:

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