2012-04-27 15 views
0

UITableViewがデータをロードしたとき(これはin this post)、いつUITableViewがすべてのセルを描画したかを知るためのものではありません。テーブルビューが初めてロードされるとき、全く細胞がまだ表示されないので、動作しないいつUITableViewがセルのロードを完了したかを知る

- (UITableViewCell *)tableView:(UITableView *)iTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

方法内側visibleCellsプロパティを使用

考えられるのは、テーブルビューをリフレッシュするときにセルの外観をアニメーション化することです。

これは実行するには複雑な作業のようですが、私はAppleがテーブルビューの読み込みが完了したときに使用する代理メソッドを提供していないことに驚いています。

答えて

0

良い

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 

はそれが時を示す方法があると私は信じていません

0

作品を願って、あなたがアニメーションの特定のセットをリロードしたいindexPathsのNSArrayを通過し、この方法を試してみてくださいテーブルがそのセルをロードしました。ただし、描画するたびに表のセルでアニメートするという目標を達成できます。

ロジック:

  1. 必要に応じてUITableViewCellsを表示するのUITableView。
  2. 各UITableViewCellはUIViewのサブクラスです。
  3. UIViewには描画が描画されるたびに呼び出されるdrawRectがあります。
  4. あなたのアニメーションをUITableViewCellのdrawRectメソッド&に入れておけば、アニメーションは描画されるたびにアニメーション化されます。

実装:

  1. がでアニメーションを実装するのdrawRectメソッドを追加
  2. 、あなたのテーブルのセルにこのサブクラスを適用
  3. 、のUITableViewCellのサブクラスを作成し、
  4. drawRectメソッド。

これは私のプロジェクトの1つで行いました。テーブルが読み込まれたりスクロールされたり、ディスプレイが回転したりすると、アニメーションが描画されます。このアプローチでは、テーブルがロードされたときを知る必要はありません。各セルは描画されるたびに単にアニメーション化されます。

もう1つのビューコントローラをテーブルビューの上に配置して閉じた場合、テーブルをリロードして各UITableViewCellをsetNeedsDisplayに設定する必要があります。これにより、各UITableViewCellに対してdrawRectが再度呼び出されます。

関連する問題