2016-07-21 3 views
1

. Остальные вопросы на эту тему не работали для меня, так что вот этот.Swift: UICollectionViewController не отображает никаких ячеек

клетки не появляются, несмотря на, я программно представления UICollectionViewController из UIViewController, который находится в раскадровке

Примечание: @IBAction Segue только кнопка действия

Это 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

Отлично, рад, что вы это решили! Просто взял какой-то код из моего проекта, так что извините, если он был немного длинным haha ​​ – riverhawk

+0

не беспокоится спасибо за отправку вашего ответа в любом случае, все еще информативный –

7

Я понял, проблема, немного глупо. При представлении нового UICollectionViewController я инициализировал его неправильно. Я использовал UICollectionViewLayout, когда мне нужно использовать UICollectionViewFlowLayout

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

wow спасибо вам! Я сделал эту глупую ошибку тоже .. вы спасли мое время !! Благодаря! –

Смежные вопросы