最好的方法是什么?我目前只是通过使用sortDescriptor来升序排序:
NSSortDescriptor *Descriptor = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
现在,如果我有一个checkButton,用于确定用户是想通过降序还是升序排序,那么处理此问题的最佳方法是什么?在创建sortDescriptor之前,我是否检查checkButton的状态?然后,如果用户再次点击checkButton(创建另一个相反类型的sortDescriptor(升序或降序),然后运行该方法以新的排序模式显示数据?谢谢。
答案 0 :(得分:0)
@interface MyController... {
BOOL _sortAscending;
}
@implementation MyController
(IBAction)swapSort {
_sortAscending = !_sortAscending;
NSSortDescriptor *Descriptor = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:_sortAscending selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
//whatever else you need to do
}
答案 1 :(得分:0)
我将按钮挂钩到一个创建排序描述符并获取结果的函数。这导致每次状态改变时都进行提取。
选择默认值,将其用作默认排序类型而不进行任何用户交互,然后用户可以使用按钮更改其首选项。
我希望你找到这个方便的!
答案 2 :(得分:0)
基本上,是的。
我很好奇为什么你问这个问题,因为你基本上是自己回答(以一系列“我应该吗?”的问题)。
您所描述的是一种相当常见的模式。但是,该按钮并不能确定排序顺序。您的应用程序维护一个配置,其中包括排序顺序和其他一些内容。配置始终包含排序顺序,该按钮允许您更改它。使用配置的任何内容都应在更改时得到通知,以便它可以更新需要更新的视图。
有很多不同的方法可以做到这一点,而且对于所有情况都没有一种正确的方法。也许按钮负责告诉表它更新了排序顺序。或者表可能负责观察配置的更改。无论哪种方式都有效。