Сортировка UITableView в алфавитном или числовом порядке по нажатию кнопки - PullRequest
0 голосов
/ 15 февраля 2012

Я настроил ячейку uitableview с четырьмя метками, а также четырьмя массивами, которые содержат данные для каждой метки.label1 содержит название объекта, а label 2 - ценник 3, а label 4 - другие данные.Теперь есть две кнопки, при первом нажатии кнопки я хочу отсортировать таблицу в алфавитном порядке имени объекта, а при втором нажатии кнопки я хочу отсортировать по цене. Пожалуйста, объясните мне, как это сделать. Вот мой код..

  - (void)viewDidLoad {
[super viewDidLoad];

details=[[NSMutableArray alloc]initWithObjects:@"dress",@"dress",@"dress",@"dress",@"dress",@"",
          @"dress",@"",@"dress",nil];
newPrice=[[NSMutableArray alloc]initWithObjects:@"500",@"1000",@"5000",@"2100",@"1222",@"100",@"5223",@"465",@"3216",nil];
oldPrice=[[NSMutableArray alloc]initWithObjects:@"200",@"900",@"6000",@"2220",@"1000",@"",@"5000",@"",@"",nil];


dataList=[[NSMutableArray alloc]initWithObjects:@"Praline rose dress",@"Praline rose dress",@"Multi Colored dress",@"Multi Colored dress",@"Multi Colored dress",@"Praline rose dress",
          @"Multi Colored dress",@"Multi Colored dress",@"Praline rose dress",nil];

searchData=[[NSMutableArray alloc]init];
[searchData addObjectsFromArray:dataList];

dataTable.delegate=self;
dataTable.dataSource=self;
[dataTable reloadData];

  -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier=@"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier];

if (cell == nil) { cell = [[[UITableViewCell alloc]
                            initWithStyle:UITableViewCellStyleDefault 
                            reuseIdentifier: CellIdentifier] autorelease];

    UILabel *labelOne = [[UILabel alloc]initWithFrame:CGRectMake(70, 10, 140, 20)];
    labelOne.tag = 100;
    labelOne.backgroundColor=[UIColor clearColor];
    labelOne.font=[UIFont systemFontOfSize:14];
    [cell.contentView addSubview:labelOne];
    [labelOne release];


    labelTwo = [[UILabel alloc]initWithFrame:CGRectMake(260, 10, 140, 20)];
    labelTwo.tag = 101;
    labelTwo.backgroundColor=[UIColor clearColor];
    labelTwo.font=[UIFont systemFontOfSize:14];
    labelTwo.textColor=[UIColor colorWithRed:0.25098 green:0.447059 blue:0.07451 alpha:1];
    [cell.contentView addSubview:labelTwo];
    [labelTwo release];


    UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(70, 30, 140, 20)];
    label3.tag = 102;
    label3.backgroundColor=[UIColor clearColor];
    label3.font=[UIFont systemFontOfSize:12];
    [cell.contentView addSubview:label3];
    [label3 release];


    UILabel *label4 = [[UILabel alloc]initWithFrame:CGRectMake(260, 30, 140, 20)];
    label4.tag = 103;
    label4.backgroundColor=[UIColor clearColor];
    label4.font=[UIFont systemFontOfSize:12];
    [cell.contentView addSubview:label4];
    [label4 release];
}

  UILabel *labelOne = (UILabel *) [cell.contentView viewWithTag:100];
labelOne.text = [searchData objectAtIndex:indexPath.row];

labelTwo = (UILabel *) [cell.contentView viewWithTag:101];
labelTwo.text = [[NSString alloc]initWithFormat:@"%@",[newPrice objectAtIndex:indexPath.row]];

UILabel *label3 = (UILabel *) [cell.contentView viewWithTag:102];
label3.text=[[NSString alloc]initWithFormat:@"%@",[details objectAtIndex:indexPath.row]];

UILabel *label4 = (UILabel *) [cell.contentView viewWithTag:103];
label4.text=[[NSString alloc]initWithFormat:@"%@",[oldPrice objectAtIndex:indexPath.row]];



return cell;

}

Ответы [ 2 ]

1 голос
/ 15 февраля 2012
if(btn.tag == 500)
{
    aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"OrderDate" ascending:YES];
}
if(btn.tag == 501)
{
    aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"CustomerGuid" ascending:YES];     
}
if (searching) {
    [temp_details sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]];
} 
else{
    [orders sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]];
}
[self.tableView reloadData];

установите теги для двух кнопок, и вы можете выполнить приведенный выше метод сортировки эти ключи являются из словаря, который установлен на метку в табличном представлении. Я сортирую эти метки, используя нажатую кнопку

0 голосов
/ 15 февраля 2012

Вы можете увидеть ссылку на класс NSArray о следующих методах.

Сортировка

sortedArrayHint
sortedArrayUsingFunction:context:
sortedArrayUsingFunction:context:hint:
sortedArrayUsingDescriptors:
sortedArrayUsingSelector:
sortedArrayUsingComparator:
sortedArrayWithOptions:usingComparator:

Что касается вашей проблемы, вы можете отсортировать строки по

[strings sortedArrayUsingSelector:@selector(compare:)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...