我在 NSTableView 中有两列作为名称和薪水,有 5-10 个值。我想在单击两个列的标题后对这些列进行排序。互联网上有很多数据,但我无法使用这些数据。请帮我在可可中做到这一点。
预先感谢并感谢任何帮助。
每个表列都有一个方法setSortDescriptorPrototype
排序描述符是告诉数组如何对自身进行排序的方法(升序、降序、忽略大小写等)
迭代您想要排序的每个列,并对每个列调用此方法,并传递所需的排序描述符(在我的例子中,我将使用列标识符)
for (NSTableColumn *tableColumn in tableView.tableColumns ) {
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:tableColumn.identifier ascending:YES selector:@selector(compare:)];
[tableColumn setSortDescriptorPrototype:sortDescriptor];
}
写完这段初始化代码后,NSTableViewDataSource
有一个方法- (void)tableView:(NSTableView *)aTableView sortDescriptorsDidChange:(NSArray *)oldDescriptors
每当排序描述符发生更改时都会通知您,在数据源中实现此方法并向数据数组发送消息以对其自身进行排序
- (void)tableView:(NSTableView *)aTableView sortDescriptorsDidChange:(NSArray *)oldDescriptors
{
self.data = [self.data sortedArrayUsingDescriptors:sortDescriptors];
[aTableView reloadData];
}
每次单击列标题时都会触发此方法,并且NSTableColumn
显示一个漂亮的小三角形,显示排序顺序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)