當我在代碼中使用FlowLayout對象並在CollectionView對象上調用reloadData()時,我的應用程序崩潰。當我使用標準的FlowLayout(來自XCode的設置)時,我沒有這樣的例外。UICollectionView和reloadData的FlowLayout()
這是我如何使用FlowLayout根據設備寬度計算部分的插圖。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let layout = UICollectionViewFlowLayout()
layout.itemSize = CGSize(width: itemWidth, height: itemWidth)
layout.minimumInteritemSpacing = minItemSpacing
layout.minimumLineSpacing = minItemSpacing
layout.headerReferenceSize = CGSize(width: 0, height: headerHeight)
let containerWidth = collectionView.bounds.width
if (containerWidth < 350) {
inset = 2
}
else if (containerWidth >= 350 && containerWidth < 400) {
inset = 10
}
else {
inset = 14
}
layout.sectionInset = UIEdgeInsets(top: minItemSpacing, left: inset, bottom: minItemSpacing, right: inset)
collectionView.collectionViewLayout = layout
}
與這樣的代碼的應用程序啓動正常,但是當我從另一個視圖控制器到主要地方去的CollectionView使用和collectionView.reloadData()被調用有以下例外
@IBAction func saveMyObjects(segue:UIStoryboardSegue) {
if let myObjectsViewController = segue.sourceViewController as? MyObjectsViewController {
MyObjects.Objects.removeAll()
MyObjects.Objects.appendContentsOf(myObjectsViewController.MyObjects)
collectionView.reloadData()
}
}
應用崩潰。
*終止應用程序由於未捕獲的異常 'NSRangeException',原因: '* - [__ NSArrayM objectAtIndex:]:索引0超出界限爲空數組' 的libC++ abi.dylib:與類型的未捕獲的異常終止NSException
如果我評論
// collectionView.collectionViewLayout = layout
線使用在Xcode值,應用程序的工作原理沒有例外。
附加代碼:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! ObjectCollectionViewCell
// Configure the cell
cell.imageView.image = UIImage(named: Groups[indexPath.section].Objects[indexPath.row].Image)
cell.label.text = Groups[indexPath.section].Objects[indexPath.row].Name
if (Groups[indexPath.section].Objects[indexPath.row].Image != "") {
cell.label.hidden = true
cell.imageView.hidden = false
}
else {
cell.imageView.hidden = true
cell.label.hidden = false
}
return cell
}
你可以發佈你的crash stackTrace嗎?看看會發生什麼? –
你好,***由於未捕獲異常'NSRangeException',原因:'*** - [__ NSArrayM objectAtIndex:]:索引0超出空數組界限' ***第一次拋出調用堆棧: (0x182afedb0 0x182163f80 0x1829dedfc 0x1884bcf80 0x1884b95e4 0x1884ba254 0x187de5394 0x187de4870 0x100112048 0x1001121c8 0x187c50224 0x1855e2994 0x1855dd5d0 0x1855dd490 0x1855dcac0 0x1855dc820 0x1855d5de4 0x182ab4728 0x182ab24cc 0x1829dcc70 0x187cc394c 0x187cbe088 0x10013d8fc 0x18257a8b8) 的libC++ abi.dylib:與類型NSException – Anton
@ReinierMelian的XCode的未捕獲的異常終止示出了在 「14開始」 的問題,如果我點擊它,出現以下信息libdyld.dylib'start: 0x18257a8b4 <+0>:nop 0x18257a8b8 <+4>:bl 0x1825b534c;退出 0x18257a8bc <+8>:brk#0x3 – Anton