swift - NSCollectionViewItem 的动态大小

标签 swift macos nslayoutconstraint nscollectionview nscollectionviewitem

我正在尝试为我的 NSCollectionViewItem 提供动态大小。我希望它们的大小由它们的内容和我定义的约束决定。

为此,我已将以下内容添加到包含 NSCollectionView 的 View Controller 中:

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:) item(at:) exception 中中断

除了向 Apple 发送错误报告之外,还有其他想法吗? 并且由于 item(at:) 不应该抛出错误,所以 do catch bloc 是无效的

最佳答案

如您所述,我认为此方法不会崩溃。 来自文档:

Return: The item for the specified index path or nil if no item is available.

你试过add an exception breakpoint吗? ?您应该看到它崩溃的地方。

关于swift - NSCollectionViewItem 的动态大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46080381/

相关文章:

xcode - Swift:使用未解析的标识符 'addChild'

c - OS X 上的 undefined symbol "_clone"

macos - Swift - 在菜单外单击时 NSMenu 关闭

ios - NSLayoutRelationConstraint 到视觉格式约束

ios - 如何从 Nuke 中删除图像以用于 Swift 缓存

ios - 在 Swift 中从 ATR 确定卡号

Swift - 等待 alamofire 完成的时间

objective-c - 为什么树结构的更改不会使用 cocoa 绑定(bind)在多个 NSOutlineView/NSTreeController 之间传播?

ios - @IBDesignable , NSLayoutConstraint 用于 super View 的比例乘数宽度?

ios - 激活/停用自动布局 NSLayoutConstraints