NSTable:如何获取列的单元格类型?

时间:2015-12-14 09:38:29

标签: objective-c cocoa

是否可以获得NSTable的列数据类型,例如ImageCell,TextCell

原因

我创建了一个向NSTable

的所有列添加排序的函数
-(void)addSortingIdentifier:(NSTableView *)table
{
    for (NSTableColumn *tableColumn in table.tableColumns ) {

        ///if column is image cell type then do't go ahead....

        NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:tableColumn.identifier ascending:YES selector:@selector(compare:)];
        [tableColumn setSortDescriptorPrototype:sortDescriptor];
    }

    table.allowsColumnSelection = NO;
}

假设NSTable中有一个Image Cell类型的列,那么它也会为它添加排序。

如果用户点击图像单元格类型的列标题,则整个NSTable的排序将停止工作。

解决方案

我想在for循环中检查一下,如果列类型是图像单元格,则不对其应用排序。

问题

如何检查列的类型?

1 个答案:

答案 0 :(得分:1)

如果您想避免在 NSImageCell上应用排序

,可以申请以下标志
    Class theClass = NSClassFromString(@"NSImageCell"); //getting the class type
    if([[tblClm dataCell] isKindOfClass:theClass]) /// do not apply sorting on image cell class
    {
        continue;
    }

修改

比较Willeke

建议的班级类型的简便方法
if([[tblClm dataCell] isKindOfClass:[NSImageCell class]])
....