【问题标题】:NSCollectionview didSelectItemsAt not getting called second timeNSCollectionview didSelectItemsAt 没有被第二次调用
【发布时间】:2021-09-21 13:43:38
【问题描述】:

我正在开发使用 NSCollectionview 的 mac os 应用程序,在某些时候我需要获取已实现 didSelectItemsAt 委托方法的特定索引的数据, 现在的问题是,当我第一次单击单元格时,它将执行 didSelectItemsAt,然后在我单击另一个单元格后,无论何时重新加载,它都不会执行该方法 重新加载视图控制器并单击它执行的任何单元格 didSelectItemsAt 但不是第二次。

下面我已经实现的委托方法。

func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>){

}

【问题讨论】:

    标签: macos nscollectionview


    【解决方案1】:

    在 didSelectItemsAt 方法的逻辑末尾添加以下行。

    func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>){
            collectionView.deselectAll(nil)
        }
    

    【讨论】:

      【解决方案2】:

      也许这样写会更好:

      collectionView.deselectItems(at: indexPaths)
      

      【讨论】:

      • 为什么?这种方法比接受的答案有什么好处?
      • @Jeremy Caney 这个方法生成的汇编代码更少,大约少了 30 行。根据开发文档,这种操作方法的目标更具体。但是,当我使用这种方法时,程序已经崩溃了。因为有时不会发生,所以一直没找到原因
      • 哦,这真的很有趣!鉴于这很有用,您介意将其编辑到您的原始答案中吗?很好奇崩溃的原因,以及其他人是否正在经历它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多