我有一个NSCollectionViewItem的子类,名为ZMSDKThumbnailCollectionViewItem。使用此方法,我希望显示一个由ZMSDKThumbnailVideoItemView表示的自定义视图。
ZMSDKThumbnailCollectionViewItem由XIB文件表示。这正好包含一个NSView,它的类被设置为ZMSDKThumbnailVideoItemView (使用身份检查器)。
@interface ZMSDKThumbnailCollectionViewItem : NSCollectionViewItem
@property (assign) IBOutlet ZMSDKThumbnailVideoItemView *videoItemView;
@end在我的NSCollectionViewDataSource中,我创建如下项目:
- (NSCollectionViewItem *)collectionView:(NSCollectionView *)collectionView itemForRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath
{
ZMSDKThumbnailCollectionViewItem* item = [collectionView makeItemWithIdentifier:@"ZMSDKThumbnailCollectionViewItem" forIndexPath:indexPath];
ZMSDKThumbnailVideoItemView* thumbnailView = [_thumbnailVideoArray objectAtIndex:indexPath.item];
// IBOutlet videoItemView
item.videoItemView = thumbnailView;
return item;
}问题:虽然_thumbnailVideoArray包含元素,但集合视图中没有显示任何内容。
当我修改ZMSDKThumbnailCollectionViewItem以使它包含一个NSLabel而不是一个ZMSDKThumbnailVideoItemView时,这些项将被正确地显示。
NSCollectionViewItem问题:我必须以何种方式创建来显示自定义视图?像我一样,将XIB文件中包含的视图的类设置为ZMSDKThumbnailVideoItemView是正确的吗?
发布于 2020-04-06 08:25:01
毕竟我找到了解决办法。
与其更改项视图的类,还必须在项的视图中添加子视图:
- (NSCollectionViewItem *)collectionView:(NSCollectionView *)collectionView itemForRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath
{
ZMSDKThumbnailCollectionViewItem* item = [collectionView makeItemWithIdentifier:@"ZMSDKThumbnailCollectionViewItem" forIndexPath:indexPath];
ZoomSDKVideoElement* thumbnailView = [_videoArray objectAtIndex:indexPath.item];
[item.view addSubview:[thumbnailView getVideoView]];
return item;
}https://stackoverflow.com/questions/61048176
复制相似问题