0

そのため、静的なTableViewでセルを拡大および縮小するコードを探していました。誰かが私と同じことをしようとしているフォーラムの投稿を見つけて、コードを借りました。

TableViewController に基づいてカスタム クラスを作成しました。以下を追加しました。

.h ファイル

NSIndexPath *selectedCellIndexPath;  

.m ファイル

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
selectedCellIndexPath = indexPath;

[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(selectedCellIndexPath != nil
   && [selectedCellIndexPath compare:indexPath] == NSOrderedSame)
    return 80;

return 40;
}

これを TableView の viewController として使用します。

私のテーブルを拡大および縮小するのには一種の機能がありますが、実際にはそうではありません。本当にジャンキーです。正しくアニメーション化されず、クリックした行の下の行が乱れているようです。

これを整理して正しく動作させるにはどうすればよいですか?

また、ビューが読み込まれるときに、行の高さを指定した数値に設定するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

選択した行をリロードする代わりに、開始/終了更新を使用する必要があります。これにより、テーブルが自動的に必要な変更を行い、それらの間でアニメーション化できるようになります。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView beginUpdates];

    if ([indexPath compare:selectedCellIndexPath] == NSOrderedSame) {
        selectedCellIndexPath = [NSIndexPath indexPathForRow:NSIntegerMax inSection:0];
    }else{
        selectedCellIndexPath = indexPath;
    }

    [tableView endUpdates];
}
于 2013-08-26T19:08:46.963 に答える