【问题标题】:Dynamic Size for NSCollectionViewItemNSCollectionViewItem 的动态大小
【发布时间】:2018-02-15 05:59:11
【问题描述】:

我正在尝试为我的 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:) 中中断

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

【问题讨论】:

标签: swift macos nslayoutconstraint nscollectionview nscollectionviewitem


【解决方案1】:

正如你提到的,我认为这种方法不会崩溃。 来自文档:

返回:指定索引路径的项目,如果没有项目可用,则返回 nil。

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

【讨论】:

    【解决方案2】:

    sizeForItemAtIndexPath 在创建UICollectionViewItem 之前调用,所以这是不可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      相关资源
      最近更新 更多