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

在iPhone中使用按钮确定升序或降序排序,iphone,nssortdescriptor,Iphone,Nssortdescriptor,最好的方法是什么?我目前只是使用sortDescriptor进行升序排序,如下所示: NSSortDescriptor *Descriptor = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] autorelease]; 现在,如果我有一个用于确定用户是想按降序还是升序排序的复选按钮,那么处理这个问题的最佳方法是

最好的方法是什么?我目前只是使用sortDescriptor进行升序排序,如下所示:

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

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

我会将该按钮连接到一个函数,该函数创建排序描述符并获取结果。这将导致每次状态更改时都进行提取

@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
}
选择一个默认值,将其用作默认排序类型,无需任何用户交互,然后用户可以使用按钮更改其首选项

我希望你觉得这很方便!

基本上,是的

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

您所描述的是一种相当常见的模式。不过,该按钮并不能真正确定排序顺序。您的应用程序维护一个配置,其中包括排序顺序,可能还有其他一些内容。该配置始终包括排序顺序,该按钮允许您更改它。当我t更改,以便可以更新需要更新的视图

有很多不同的方法可以做到这一点,并且没有一种适合所有情况的正确方法。可能按钮负责告诉表它更新了排序顺序。或者表负责观察配置的更改。任何一种方法都有效