我正在尝试使用垂直方向的流布局设置NSCollectionView。为了快速测试数据源,我分别从Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim varValue As Variant
'get the cell value
varValue = ActiveCell.Value
'do something with it - you can launch your form here
MsgBox CStr(varValue)
' NOTICE here that you can cancel the double click event
' meaning no attempt to edit the cell will be made per the users double click
Cancel = True
End Sub
和collectionView(_:numberOfItemsInSection:)
返回静态数字和视图。
以下是方法:
collectionView(_:itemForRepresentedObjectAtIndexPath:)
基本上,我总是返回2个全黑的NSCollectionViewItems,不透明度为50%。当我运行应用程序时,它将两个视图放在一起。
这是一个分解显示两个视图:
每个项目的大小设置为50x50,每个方向的最小间距为10。
我错过了什么?是什么让这些观点分开?在documentation中,它说:
通常,您可以使用此类的属性指定项目的大小及其间距。如果要自定义项的值,请在分配为集合视图委托的对象中实现NSCollectionViewDelegateFlowLayout协议的方法。
我没有实现这个委托,所以不应该使用我在界面构建器中放置的值(50x50和10间距)吗?
答案 0 :(得分:0)
我仍然不确定问题到底是什么,但这是我采取的措施:
Item
)Item
)collectionView(_:itemForRepresentedObjectAtIndexPath:)
中的代码更改为以下内容:func collectionView(collectionView: NSCollectionView,
itemForRepresentedObjectAtIndexPath indexPath: NSIndexPath) -> NSCollectionViewItem {
return collectionView.makeItemWithIdentifier("Item", forIndexPath: indexPath)
}
现在我不仅要按照自己的意愿进行布局,而且还要定制,而不仅仅是灰盒子!以下this教程帮我解决了这个问题。
如果有人想要解释实际问题是什么,我会保持开放并接受实际回答问题的内容。
答案 1 :(得分:0)
我遇到了同样的问题,并且假设影响你的是同样的事情,也已经找到了修复。
当NSCollectionViewItem子类的多个实例最终配置为定位同一项目视图时,会出现描述的症状。我遇到这种方式非常简单,因为我试图设置一个基于类的项目,但仍然由xib支持。像这样:
现在你已经有了一个可以实例化并自动加载其nib的类,这要归功于默认的NSViewController机制。但是,当您这样做时,它还将实例化另一个也指向视图的NSCollectionViewItem实例。
我的理论是第二个,虚假视图项目实例在重新布局时最终会查看视图定位,并且默认为0-0索引路径,从而导致每个关联视图绘制在相同位置
修复是删除xib中的伪造顶级视图项,或者切换到使用基于寄存器(nib:...)的方法。