我有一個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)
}
}
哪條線發生錯誤?你是否添加了一個異常斷點來試圖找出錯誤的位置? – Fogmeister
cell.name.text = names [indexPath!.item]獲取一個Thread1:EXC_BAD_INSTRUCTION(code = EXC_1386_INVOP,subcode = 0x0) –
也許我很笨,但是你沒有定義'var names'在範圍之外'viewDidLoad'。當然,你應該在整個對象的範圍內定義var ...'var names',而不僅僅是viewDidLoad。 – Fogmeister