使用按钮确定在iPhone中升序或降序排序

时间:2011-06-27 18:08:24

标签: iphone nssortdescriptor

最好的方法是什么?我目前只是通过使用sortDescriptor来升序排序:

NSSortDescriptor *Descriptor = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];

现在,如果我有一个checkButton,用于确定用户是想通过降序还是升序排序,那么处理此问题的最佳方法是什么?在创建sortDescriptor之前,我是否检查checkButton的状态?然后,如果用户再次点击checkButton(创建另一个相反类型的sortDescriptor(升序或降序),然后运行该方法以新的排序模式显示数据?谢谢。

3 个答案:

答案 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)

基本上,是的。

我很好奇为什么你问这个问题,因为你基本上是自己回答(以一系列“我应该吗?”的问题)。

您所描述的是一种相当常见的模式。但是,该按钮并不能确定排序顺序。您的应用程序维护一个配置,其中包括排序顺序和其他一些内容。配置始终包含排序顺序,该按钮允许您更改它。使用配置的任何内容都应在更改时得到通知,以便它可以更新需要更新的视图。

有很多不同的方法可以做到这一点,而且对于所有情况都没有一种正确的方法。也许按钮负责告诉表它更新了排序顺序。或者表可能负责观察配置的更改。无论哪种方式都有效。