在viewDidLoad
上,我为collectionViewLayout
设置了UICollectionViewCell
,并使用UILabel
表示“正在加载内容...”,当应用程序从服务器获取内容时,它会执行以下操作:
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
...
// some configuration for the layout
// here it crash:
collectionView.setCollectionViewLayout(layout, animated: true)
出现此消息后崩溃:
*由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[__ NSArrayM objectAtIndex:]:索引0超出了空数组的范围”
***首先抛出调用堆栈:
(0x24479b0b 0x23c36dff 0x2438a6d3 0x29275999 0x29271d13 0x29272aaf 0x28be537f 0x28be4667 0x1778dc 0x165f48 0x1661b8 0x16e774 0x16f038 0xf950c 0xf9174 0xdefb0 0xe1934 0xdf98c 0x52ed78 0x52d700 0x52bfc8 0x4df9c0 0x1531ba7 0x1531b93 0x1536659 0x2443b755 0x24439c4f 0x243881c9 0x24387fbd 0x259a4af9 0x28ac0435 0x131254 0x24034873)
libc ++ abi.dylib:以NSException类型的未捕获异常终止
我所做的事情是将一个
collectionViewLayout
设置为另一个。我试图通过重新加载
invalidateLayout()
来使布局无效,或者在替换collectionView
之前不重新加载collectionViewLayout
,但它仍然崩溃。我该怎么做才能动态更改
collectionViewLayout
?或我做错了什么?谢谢
最佳答案
对于iOS9和iOS8,我遇到了同样的问题。
就我而言,请在collectionView.layoutIfNeeded()
之后调用collectionView.collectionViewLayout.invalidateLayout()
来解决。
关于ios - Swift-无法动态更改UICollectionViewFlowLayout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38647561/