0

NSObjectに格納されている配列のデータを表示するテーブルビューがあります。NSObjectのプロパティの1つは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].

配列を並べ替えるには多くの方法がありますが、オブジェクトに関するすべての情報を知らなくても、日付で並べ替える方法の 1 つは次のとおりです。

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 に答える