2017-12-10 15 views
0

プログラムでUICollectionViewを作成しようとしています。これは私が持っているもので、これまでCollectionViewのセルが表示されません

私もUICollectionViewControllerが含まれている、UICollectionViewDelegateFlowLayout

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.collectionView!.backgroundColor = UIColor(red: 153/255, green: 204/255, blue: 153/255, alpha: 1) 

    // Uncomment the following line to preserve selection between presentations 
    // self.clearsSelectionOnViewWillAppear = false 
    self.collectionView!.alwaysBounceVertical = true 
    // Register cell classes 
    self.collectionView!.register(threadCell.self, forCellWithReuseIdentifier: reuseIdentifier) 


    // Do any additional setup after loading the view. 
} 

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of items 
    return 3 
} 

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) 

    // Configure the cell 

    return cell 
} 
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
    return CGSize(width: view.frame.height, height: 50) 
} 

    class threadCell: UICollectionViewCell{ 
    override init(frame: CGRect){ 
     super.init(frame: frame) 
     setupViews() 
    } 
    let userName: UILabel = { 
     let name = UILabel() 
     name.text = "testing" 
     name.font = UIFont.boldSystemFont(ofSize: 14) 
     name.translatesAutoresizingMaskIntoConstraints = false 
     return name 

    }() 
    required init?(coder aDecoder: NSCoder) { 
     fatalError() 
    } 
    func setupViews(){ 
     backgroundColor = UIColor.blue 
     addSubview(userName) 
     addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0" : userName])) 
     addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0" : userName])) 

    } 
} 

アプリがクラッシュしたり、任意の表示されません テストラベルで3つのセルごとに表示される必要があり、結果エラーは表示されませんが、セルは表示されません。

+0

あなたは、デリゲートとデータソースを設定しましたか?コレクションビューの背景色が見えますか?デリゲートメソッドが呼び出されますか? – Yitzchak

+0

カスタムセルを使用していません。少なくとも、Interface Builderでセルの名前をカスタムセルに設定し、デキューされたセルをカスタムセルにキャストする必要があります。クラス名と構造体名が大文字で始まると考えてください。 – vadian

+0

コレクションビューをviewcotrollerに追加した方法 – Vinodh

答えて

0
func collectionView(_ collectionView: UICollectionView, layout 
collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: 
IndexPath) -> CGSize { 
    return CGSize(width: view.frame.**height**, height: 50) } 

わかりませんが、本当にwiを設定しますかview.frame.heightによるセルのdth?

0

あなたは(のviewDidLoadでdataSourcedelegateを確認する必要があります) - :

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.collectionView!.backgroundColor = UIColor(red: 153/255, green: 204/255, blue: 153/255, alpha: 1) 

    // Uncomment the following line to preserve selection between presentations 
    // self.clearsSelectionOnViewWillAppear = false 
    self.collectionView!.alwaysBounceVertical = true 
    // Register cell classes 
    self.collectionView!.register(threadCell.self, forCellWithReuseIdentifier: reuseIdentifier) 

     self.collectionView.delegate = self 
     self.collectionView.dataSource = self 

    // Do any additional setup after loading the view. 
} 
0

あなたはビューの高さに等しいcollectionViewCellの幅を作成している。このデリゲートメソッド

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
    return CGSize(width: view.frame.height, height: 50) 
} 

を確認してください。

あなたがプログラム的コレクションビューを作成する方法を知りたい場合は:あなたはリンクの下からプロジェクトをチェックアウトすることができます:

Explain How to create collection in code with auto-layout.

関連する問題