0

UITableView を主要なユーザー インターフェイスとして使用する iPhone アプリを作成しています。各セクションは、ヘッダーと本文の 2 つの行で構成されます。ユーザーがヘッダーをクリックすると、numberOfRowsInSection の値を変更して 2 行目を削除します。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    cbwComponent *comp = [_componentController objectInListAtIndex:section];
    if([comp hasContentsView] && !comp.contentsHidden){
        return 2;
    }else
        return 1;
}

ユーザーがヘッダーを選択すると、次のコードを使用しています。

comp.contentsHidden = YES;
[self.tableView beginUpdates];
NSArray *deleteIndexPaths = [[NSArray alloc] initWithObjects:[NSIndexPath indexPathForRow:1 inSection:indexPath.section], nil];
[self.tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];

滑らかなフェード効果があり、うまく機能しています。問題は、クリックすると変化するヘッダー セル (行 0) にインジケーターを追加しようとしていることです。そのイメージを変更するには、一番上の行と 2 番目の行を更新する必要があります。セルを更新せずに UITableViewCell の画像を変更する方法はありますか?

ありがとう

編集:私はそれを理解しました!2 番目の行に変更を加える前に最初の行をリロードする限り、スムーズな移行を維持できます。[tableView beginUpdates] 内で呼び出す必要があります。

[self.tableView beginUpdates]; 
[self.tableView reloadRowsAtIndexPaths:[[NSArray alloc] initWithObjects:[NSIndexPath indexPathForRow:0 inSection:indexPath.section], nil] withRowAnimation:UITableViewRowAnimationNone]; 
... 
[self.tableView endUpdates];

トリックをしました。

4

1 に答える 1

1

テーブルビュー セルをサブクラス化し、View Controller から呼び出すことができるビュー遷移を実装することもできます。その後、セルをリロードせずに呼び出すことができます。

[(YourCustomCell*)[tableView  cellForRowAtIndexPath:indexPathOfYourCell] fadeInIndicator];
于 2012-05-22T18:30:50.747 に答える