2016-07-21 53 views
1

非關於此主題的其他問題已經爲我工作,所以在這裏去了這一個。Swift:UICollectionViewController不顯示任何單元格

無細胞出現,儘管,我以編程方式從UIViewController是在故事板

注呈現UICollectionViewController@IBAction賽格瑞只是一個按鈕動作

這是UIViewController

@IBAction func segue(sender: AnyObject) { 
    let collectionview = CollectionViewController(collectionViewLayout: UICollectionViewLayout()) 
    self.presentViewController(collectionview, animated: true, completion: nil) 
} 

然後這是UICollectionViewController

import UIKit 

private let reuseIdentifier = "Cell" 

class CollectionViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     collectionView?.backgroundColor = UIColor.brownColor() 
     self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier) 
    } 


    // MARK: UICollectionViewDataSource 

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
     return 1 
    } 


    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 10 
    } 

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) 
     cell.backgroundColor = UIColor.blueColor() 
     return cell 
    } 

} 

我必須錯過一些明顯的東西。預先感謝爲我指出的人。

+0

細胞大小失蹤?另請檢查設置您的集合視圖的委託和數據源。 –

+0

@EvgenyKarkan不幸的是,這不是問題,委託和數據源不需要設置,因爲它是一個UICollectionViewController,謝謝 –

回答

1

所以我花了戳它,並得到了這個工作:

在您的viewDidLoad()方法,試試這個:

let screenSize = UIScreen.mainScreen().bounds 
    let screenWidth = screenSize.width - 25 

    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() 
    layout.sectionInset = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5) 
    layout.itemSize = CGSize(width: screenWidth/4, height: screenWidth/4) 
    layout.minimumInteritemSpacing = 5 
    layout.minimumLineSpacing = 5 

    self.collectionView = UICollectionView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height), collectionViewLayout: layout) 
    self.collectionView?.backgroundColor = UIColor.brownColor() 
    self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier) 

我想問題不指定UICollectionViewFlowLayout上籃細胞。這會在每個單元格之間添加5px的間距,但如果需要,您可以更改它。希望這可以幫助!

+0

嘿謝謝你的答案,這是行得通的,但它很長時間。閱讀我的答案我剛剛發佈看到一個單詞的錯誤,我讓它修復:) –

+0

很好,很高興你解決了它!剛從我的一個項目拿了一些代碼,很抱歉,如果有點長哈哈 – riverhawk

+0

無後顧之憂無論如何張貼您的答案,仍然信息 –

7

我想出了這個問題,真的有點傻。當提出新的UICollectionViewController我初始化它錯了。我用UICollectionViewLayout當我需要使用UICollectionViewFlowLayout

@IBAction func segue(sender: AnyObject) { 
    let collectionview = CollectionViewController(collectionViewLayout: UICollectionViewFlowLayout()) 
    self.presentViewController(collectionview, animated: true, completion: nil) 
} 
+0

哇謝謝兄弟!我也犯了這個愚蠢的錯誤..你節省了我的時間!謝謝! –