0

我有一个表格视图,它显示存储在 NSObject 中的数组中的数据。NSObject 中的属性之一是 inputtime (currentCall.inputtime),我想根据它对显示的数据进行排序。我该怎么做呢?谢谢。

这是我的 cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    JointCAD *currentCall = [[xmlParser calls] objectAtIndex:indexPath.row];
    static NSString *cellidentifier1 = @"cell1";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellidentifier1];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellidentifier1];
    }

    cell.textLabel.text = currentCall.currentCallType;
    cell.detailTextLabel.text = currentCall.location;
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    return cell;
}
4

2 回答 2

6

您应该做的不是对 cellForRow 中的单元格进行排序,而是应该提前对数组进行排序,然后调用[tableview reloadData].

有很多方法可以对数组进行排序,并且在不知道有关对象的所有信息的情况下,按日期排序的一种方法如下。

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"inputtime" ascending:TRUE];
[myMutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
于 2012-12-13T18:58:23.320 回答
1

您必须先对数据模型进行排序。但在方法之外didSelectRowforIndexPath

您可以访问代码中的某些位置:

currentCall = [[xmlParser calls] objectAtIndex

此时数组必须已经排序。

进行排序,例如在ViewWillAppear. 在cellForRowAtIndexPath数据中已经必须进行排序。

如果数据模型动态变化,例如通过删除单元格行,那么您必须使用 [self.tableView reloadData]

于 2012-12-13T18:56:43.847 回答