2014-06-30 11 views
10

Bir koleksiyonViewController'ım var, bunlara bazı etiketler içeren birtakım özel UICollectionViewCells görüntülemek istiyorum. Ne yazık ki denemek ve özel UICollectionViewCell etiketini eriştiklerinde onunla çökertmesidir:Etiket Çıkışında Özel UICollectionViewCell'de İsteğe Bağlı Bir Düzenleme Yapılmasına Gerek Yok.None Crash

Konsolundan

fatal error: Can't unwrap Optional.None

ben şöyle etiketi erişmeye çalışıyorum

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

Pencere :

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

Belki de bu benim çıkış etiketimden nil geliyor? Ama cevaplar için etrafa bakma, hiçbir şey işe yaramadı, çünkü sorunun ne eklediğinden emin değilim? benim kodumda gerçekten yardımcı olmuyor.

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

Hangi satırda hata var? Hatanın nerede olduğunu bulmak için bir özel durum kesme noktası eklediniz mi? – Fogmeister

+0

cell.name.text = adlar [indexPath! .item] bir iş parçacığı alır1: EXC_BAD_INSTRUCTION (kod = EXC_1386_INVOP, altkökü = 0x0) –

+1

Belki de aptalım ancak 'var adlarını' kapsamı dışında tanımlıyorsunuz 'viewDidLoad'. Şüphesiz, var ... 'var isimleri ', sadece viewDidLoad değil, tüm nesnenin kapsamında tanımlamalıdır. – Fogmeister

cevap

10

Bulunan cevap here

Kaldır, self.collectionView.registerClass(MyCustomCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

Detaylı bilgi için tıklayın Neden