objective-c - 以编程方式使用数据源创建 NSCollectionView

标签 objective-c macos cocoa nscollectionview

我正在尝试使用NSCollectionViewDataSource以编程方式创建NSCollectionView

代码很简单:

self.collectionView = [[NSCollectionView alloc] init];
// Add collection view to self.view etc. 
self.collectionView.dataSource = self;
[self.collectionView registerClass:[NSCollectionViewItem class] forItemWithIdentifier:@"test"]
self.collectionView.collectionViewLayout = gridLayout;
[self.collectionView reloadData]

这会导致以下方法被调用(如果我没有显式设置 collectionViewLayout 属性,这两个方法也不会被调用):

- (NSInteger)numberOfSectionsInCollectionView:(NSCollectionView*)collectionView
- (NSInteger)collectionView:(NSCollectionView*)collectionView numberOfItemsInSection:(NSInteger)section

但是,collectionView:itemForRepresentedObjectAtIndexPath: 永远不会被调用。为了确保调用最后一个数据源方法,我还需要做其他事情吗?我已经确保两个 count 调用返回 > 0,所以这不是问题。

最佳答案

看来问题实际上是我没有将 NSCollectionView 包装在 NSScrollView 中。如果布局未包装在 ScrollView 中,这可能与布局不正确有关(因此不会从数据源请求项目)。

关于objective-c - 以编程方式使用数据源创建 NSCollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36230928/

相关文章:

xcode - 如何在Cocoa中实现DataView?

ios - 使 UITableViewDataSource 的主视图 Controller 委托(delegate)

iphone - 如何通过服务器上的数组上传图片?

ios - 禁用时更改 UIButton 边框

ios - 如何使用 Swift 在 SceneKit 中调试自定义几何体

cocoa - WebView 中链接的 NSRect 坐标

ios - Facebook iOS SDK,授权后黑屏

macos - 如何对名称以 '-' 开头的文件使用通配符?

python - Swift 任务打开管道的文件描述符

iphone - UIpicker滚动声音