【发布时间】:2019-01-16 12:23:44
【问题描述】:
我正在尝试使用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: 永远不会被调用。为了确保调用最后一个数据源方法,我还需要做些什么吗?我确保两个计数调用返回 > 0,所以这不是问题。
【问题讨论】:
-
尝试从 gridLayout 更改为新的(我忘记它叫什么了)。网格布局是旧式布局。
-
NSCollectionViewGridLayout在 10.11 中可以使用新的数据源方法,所以它应该可以工作。尝试将其更改为NSCollectionViewFlowLayout,但不幸的是它仍然没有调用itemForRepresentedObjectAtIndexPath。
标签: objective-c macos cocoa nscollectionview