2
NSIndexPath* updatedPath = [NSIndexPath indexPathForRow: 0 inSection: 0]; 
NSIndexPath* updatedPath2 = [NSIndexPath indexPathForRow: 1 inSection: 0]; 
NSArray* updatedPaths = [NSArray arrayWithObjects:updatedPath, updatedPath2, nil]; 
[self.mySexyTableView reloadRowsAtIndexPaths:updatedPaths withRowAnimation:UITableViewRowAnimationTop];

上記のコードは機能し、アニメーション化されます。問題は、大量のデータがあり、行インデックスをハードコーディングしたくないことです。テーブルセクションにセクションが 1 つしかないため、セクションを 0 にすることができます。NSIndexPath オブジェクトの NSArray を動的に生成するにはどうすればよいですか?

または、テーブル ビューをアニメーション化する簡単な方法はありますか。ユーザーがテーブル ビューの上部にあるタブをクリックすると、テーブル ビューのすべての行が変更されます。

4

6 に答える 6

7

インデックス パスの配列を生成するには、次のようにループします。

    NSMutableArray *updatedPaths = [NSMutableArray array];
    for (NSNumber *row in someArray) {
        NSIndexPath *updatedPath = [NSIndexPath indexPathForRow:[row intValue] inSection:0];
        [updatedPaths addObject:updatedPath];
    }
    [self.mySexyTableView reloadRowsAtIndexPaths:updatedPaths withRowAnimation:UITableViewRowAnimationTop];

TableView にすべてのデータを再読み込みする場合、なぜ reloadData メソッドを呼び出さないのでしょうか?

于 2009-07-08T09:50:05.187 に答える
6

セクション全体を更新する場合:

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationTop];
于 2010-07-08T10:34:31.587 に答える
3

行インデックスが等しい複数の indexPathForRow がある場合、この例外が発生します。

エランプレ用

[segmentTable reloadRowsAtIndexPaths: [[NSArray alloc] initWithObjects: 
                                [NSIndexPath indexPathForRow: 1 inSection: 1], 
                                [NSIndexPath indexPathForRow: 1 inSection: 1], nil]                                 withRowAnimation:UITableViewRowAnimationNone];
于 2009-09-07T11:09:13.583 に答える
0

self.arTableDataはテーブルの可変配列でありtableView、 は のインスタンスであると仮定しますUITableView。に 10 行 (つまり、配列内に 10 個のオブジェクト) があるとしtableViewます。次のコードを実装して、アニメーション化された行を削除します。

int i; // to remove from 3 to 6
for(i=2;i<6;i++)
{
    [self.arTableData removeObjectAtIndex:i];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:i inSection:0]] withRowAnimation:UITableViewRowAnimationRight];
}

そのトリックは、面倒なく私にとってはうまくいきます。それがあなたにとっても同じように機能することを願っています。幸運を祈ります。

于 2011-07-20T05:15:37.647 に答える
0

私はついにそれを働かせました。コードは次のとおりです。

NSMutableArray *indexPaths = [[[NSMutableArray alloc] init] autorelease];
for (int i = 0; i < [mySexyList count]; i++) {
   NSIndexPath *updatedPath = [NSIndexPath indexPathForRow:i inSection:0];
   [indexPaths addObject:updatedPath];
}

[self.myFunkyTableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationTop];

問題は、numberOfRowsInSection: メソッドからハードコードされた値を返していたことで、これは mySexyList のサイズと同じではありませんでした。これはアプリをクラッシュさせていました。

于 2009-07-09T07:19:47.990 に答える