我在NSCollectionView应用程序(SDK10.13)中使用带有标准NSCollectionViewFlowLayout的MacOS。
无论出于什么原因,IndexPath(item: 0, section: 0)的项目都没有得到正确的“认可”。
例如,查询indexPathForItem(at: point)对此项的返回值为零。此外,此特定项不需要委托方法(如collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) )。
collectionView中所有其他项的行为都是正确的。
当显式触发collectionView.layout()时(例如在rightMouseDown(_:)中),一切正常工作,项目响应委托方法。
我试图在collectionView.layout()中触发viewDidLoad(),但没有成功。在随后的布局事件(例如滚动视图)发生之前,项目是不可选择的。
你知道为什么最初的布局会导致这样的行为吗?
更新:
我刚刚发现注释掉了节标题大小的委托方法
func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> NSSize {
return NSSize(width: 1000, height: 50)
}解决问题,第一项行为正确。
我当然想要个头像。对于我需要知道的节头大小是否有任何限制?
发布于 2017-10-25 09:50:20
好吧,算了。原来是我的错。
对于问题发生的场景,我想要取消标题。
虽然我很懒,但我只是返回了一个普通的NSView()作为标题视图
func collectionView(_ collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: NSCollectionView.SupplementaryElementKind, at indexPath: IndexPath) -> NSView我想,不返回一个适当的布局约束视图会使collectionView布局变得混乱。
https://stackoverflow.com/questions/46928350
复制相似问题