我正在尝试给我的NSCollectionViewItem一个动态大小。我希望它们的大小由它们的内容和我定义的约束决定。
为此,我在包含NSCollectionView的视图控制器中添加了以下内容:
extension ViewController : NSCollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize{
let item = collectionView.item(at: indexPath)
if let viewItem = item as NSCollectionViewItem? {
return viewItem.view.fittingSize
}
return NSSize(width: 200, height: 100)
}
}抛出异常。
An uncaught exception was raised
*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]我不知道它是从哪里来的,我试着去捕捉它,但是xcode说item(at:)不抛出异常。
编辑:但实际上确实如此,我有一个异常断点,它在item(at:)中中断

除了向苹果发送错误报告之外,还有人有其他想法吗?因为项(at:)不会抛出错误,所以do catch块是无效的
发布于 2017-09-07 00:59:21
发布于 2018-08-09 05:06:56
在创建UICollectionViewItem之前调用sizeForItemAtIndexPath,所以不可能这样做。
https://stackoverflow.com/questions/46080381
复制相似问题