2014-06-30 106 views
10

我有一個collectionViewController,我想顯示一堆自定義UICollectionViewCells與他們上的一些標籤。不幸的是,每當我嘗試訪問自定義UICollectionViewCell的標籤,這會導致系統崩潰有:標籤出口自定義UICollectionViewCell在迅速導致Optional.None崩潰

控制檯

fatal error: Can't unwrap Optional.None

窗口

Thread1: EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP, subcode=0x0)

我試圖訪問標籤,像這樣:

cell.name.text = names[indexPath!.item] 

也許這是來自我的插座標籤爲零?但四處尋找答案什麼都沒有起作用,因爲我不確定問題是什麼添加的?/!在我的代碼中並沒有真正的幫助。

MyCustomUICollectionViewController

class ScrambledTextCollectionViewController: UICollectionViewController { 

    var names: String[] = ["Anna", "Alex", "Brian", "Jack"] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Register cell classes 
     self.collectionView.registerClass(MyCustomCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier) 

    } 

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

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

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

     cell.name.text = names[indexPath!.item] 

     return cell 
    } 
} 

MyCustomCollectionViewCell

class MyCustomCollectionViewCell: UICollectionViewCell { 

    @IBOutlet var name: UILabel 
    init(frame: CGRect) { 
     super.init(frame: frame)     
    } 
} 
+0

哪條線發生錯誤?你是否添加了一個異常斷點來試圖找出錯誤的位置? – Fogmeister

+0

cell.name.text = names [indexPath!.item]獲取一個Thread1:EXC_BAD_INSTRUCTION(code = EXC_1386_INVOP,subcode = 0x0) –

+1

也許我很笨,但是你沒有定義'var names'在範圍之外'viewDidLoad'。當然,你應該在整個對象的範圍內定義var ...'var names',而不僅僅是viewDidLoad。 – Fogmeister

回答

10

找到答案here

刪除,self.collectionView.registerClass(MyCustomCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

閱讀連接的詳細原因爲什麼