我正在尝试为NSCollectionViewItem提供动态大小。我希望他们的大小由他们的内容和我定义的约束决定。
为此,我已添加到我的viewcontroller,它包含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:)
中突破
除了向Apple发送错误支持之外,还有人有其他想法吗? 并且因为item(at :)不应该抛出错误,所以catch catch bloc是无效的
答案 0 :(得分:0)
正如你所提到的,我不认为这种方法会崩溃。 来自文档:
返回:指定索引路径的项目,如果没有项目可用,则为nil。
你试过add an exception breakpoint吗?你应该看到它崩溃的地方。
答案 1 :(得分:0)
sizeForItemAtIndexPath
在创建UICollectionViewItem
之前调用,所以不可能做到这一点。