是否可以获得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循环中检查一下,如果列类型是图像单元格,则不对其应用排序。
问题
如何检查列的类型?
答案 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]])
....