2014-11-21 182 views
4

我在故事板中的UICollectionView中有一個UICollectionViewController。 UICollectionViewController鏈接到我的自定義class MasterViewController: UICollectionViewController, UICollectionViewDataSource, UICollectionViewDelegate,它的委託和數據源在故事板中鏈接到這個類。UICollectionViewCell與故事板

我有一個原型UICollectionViewCell在故事板,與標識符「了myCell」,從我的自定義class Cell: UICollectionViewCell

cellForItemAtIndexPath方法,在該行的應用程序崩潰:let cell:Cell = collectionView.dequeueReusableCellWithReuseIdentifier("MyCell", forIndexPath: indexPath) as Cell

我沒有找到原因。我還沒有實現registerClass:forCellWithReuseIdentifier:方法,故事板的標識符正好是「MyCell」,我查了很多次,委託和數據源都鏈接到了正確的類。

當應用程序崩潰,沒有什麼是打印到控制檯上,只是 「(LLDB)」

這裏是我的代碼:

class MasterViewController: UICollectionViewController,UICollectionViewDataSource,UICollectionViewDelegate { 


var objects = [ObjectsEntry]() 

@IBOutlet var flowLayout: UICollectionViewFlowLayout! 

override func awakeFromNib() { 
    super.awakeFromNib() 
} 


override func viewDidLoad() { 
    super.viewDidLoad() 

    flowLayout.itemSize = CGSizeMake(collectionView!.bounds.width - 52, 151) 

} 



// MARK: - Collection View 

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

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

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell:Cell = collectionView.dequeueReusableCellWithReuseIdentifier("MyCell", forIndexPath: indexPath) as Cell 

    return cell 

} 
+0

這裏是通過得到一個基本的集合視圖和集合視圖小區設立的散步:http://stackoverflow.com/questions/31735228/how-to-make-a-simple-collection - 視圖 - 與-迅速 – Suragch 2015-07-30 22:45:28

回答

4

我有同樣的問題。 Raywenderlich Swift manual幫助了我。我在這裏複製MyCollectionViewController

  • 標識符必須在控制器和故事板中匹配。
  • 創建自定義UICollectionViewCell類。
  • 在故事板中設置此UICollectionViewCell
  • 請勿撥打viewDidLoad()
  • 不要在collectionView:layout:sizeForItemAtIndexPath:調用registerClass:forCellWithReuseIdentifier:
  • 設置單元格的商品尺寸與UICollectionViewDelegateFlowLayout

    import UIKit 
    
    class MyCollectionViewController: 
    UICollectionViewController, 
    UICollectionViewDelegateFlowLayout { 
    
    private let reuseIdentifier = "ApplesCell" 
    
    // MARK: UICollectionViewDataSource 
    
    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
        return 1 
    } 
    
    override func collectionView(collectionView: UICollectionView, 
          cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as MyCollectionViewCell 
        cell.backgroundColor = UIColor.redColor() 
        cell.imageView.image = UIImage(named: "red_apple") 
        return cell 
    }