0

回答に困っている質問が 2 つあります。

私は UITableView を持っています。セルに触れると、高さが変わり、サブビューが詳細に挿入されます。

問題は、別のセルを選択したときに、他のセルを折りたたむ明確な方法がないことです。私が一時的な修正として行ったのは、セルを選択するたびにループを実行し、各セルで、選択したセルでない場合は折りたたむことです。これは効率的ではないようです。誰かアイデアがありますか?

2 番目の質問は、セルを折りたたむたびにアニメーションが表示されるということです。しかし、それは耳障りな詳細サブビューを削除します。セルのアニメーション化が完了するまで待って削除する方法はありますか? 適切なデリゲート メソッドが見つかりません。

前もって感謝します。

4

1 に答える 1

1

おそらく最善の方法は、以前に触れたセルのインデックス パス (行) を格納する変数を用意することです。次に、現在のセルのインデックスが前のセルと等しくないかどうかをテストし、前のセルを折りたたんで新しいセルを開きます。

2 番目の問題については、サブビューを削除する前に折りたたみをアニメーション化できませんか? [UIView beginAnimations](または同様のもの)を使用していると思います。アニメーションの長さを設定し、アニメーション[UIView setAnimationDuration:1.0]をコミットした後、 を実行します[self performSelector:@selector(collapseCell) withObject:nil afterDelay:1.0]

私はこれをテストしておらず、記憶を失っています。期待どおりに機能しない場合は申し訳ありませんが、おそらく正しい方向に進むことができます.

編集: 申し訳ありませんが、「コア アニメーション」タグが表示されませんでした。2 番目の解決策は適切ではない可能性があります。

于 2012-07-09T01:29:17.400 に答える