首页 > 解决方案 > 如何在 Cocoa Mac OS 开发中从多个 NSCollectionView 中唯一标识一个 NSCollectionview?

问题描述

我在一个 NsViewcontroller 上显示了 4 个 NscollectionView。我无法检测到每个 NscollectionView Uniquely 。我曾尝试通过设置标签值来实现它,但是在可可开发中它说标签属性是只读的。让我知道是否有任何更好的方法或我可以做的任何纠正来解决这个问题。

注意:- 我在我的 ios 应用程序上做了同样的事情,没有问题,在 ios 中设置标签并不麻烦。

    - (void)viewDidLoad {
    [super viewDidLoad];

    self.cinemaNowCollectionView.tag = 1;
    self.recentMovieCollectionView.tag = 2;
}

这是我得到的错误

标签: objective-cmacoscocoa

解决方案


tagNSView是(哪些NSCollectionView子类)上的只读属性。

标签属性文档说:

此属性的默认值为 –1。子类可以覆盖此属性以为视图提供单独的标签,可能将属性重新定义为读写,以便您可以更轻松地修改它。

我假设NSControl已经这样做了,所以很多默认对象默认支持读/写标签。

您可以按照文档中的说明进行操作,并NSCollectionView使用可写标签创建一个子类。

或者,正如评论中所建议的,只需通过指针确定您的观点:

- (void)collectionView:(NSCollectionView *)collectionView didSelectItemsAtIndexPaths:(NSSet<NSIndexPath *> *)indexPaths
{
    if (collectionView == self.cinemaNowCollectionView)
    {

    }

// etc

}

推荐阅读