2011-06-27 46 views
0

这样做的最佳方式是什么?我现在只是有点用sortDescriptor像这样升:使用按钮决定在iPhone中升序或降序排序

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 
} 
0

基本上,是的。

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

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

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