2012-04-09 20 views
2

NSFetchedResultsControllerに基づいてUITableViewがあります。新しい行をテーブルに挿入するには、モーダルビューコントローラーを開き、モーダルビューを解除して、NSFetchedResultsControllerデリゲートメソッド(willChangeContent、didChangeObject`など)を起動して挿入をアニメーション化する保存ボタンを押します新しい細胞のすべては問題ありませんが、私はこのアニメーションを見たいと思っています。モーダルビューが消えたら、アニメーションはすでに完了しています。遅延NSFetchedResultsControllerデリゲートメソッド

モーダルビューが完全に消えてユーザがアニメーションを見ることができるようにするには、どうすればこのアニメーションを遅らせることができますか?

答えて

1

これはNSFetchedResultsコントローラの有無に関係なく良い質問です。モデルを観察しているテーブルvcを持っていて、別のView Controllerからポップしたりアニメーションを解除したりする必要があります。

おそらくもっと良い方法がありますが、最近私が同様の状況で行ったことは、子会社(プッシュまたはモーダルに表示された)vcの代理人メッセージに基づいて、モデルの更新自体をテーブルvcに行わせることでした。

ので、テーブルのVCで:

AddingVC *addingVC = [[AddingVC alloc] initWithDelegate:self]; 
[self presentModalViewController:addingVC animated:YES]; 

// adding to the model will happen in this vc, based on a delegate message 

- (void)addingVcDidCreateAnObjectToAdd:(id)objectToAdd { 

    // add to your model here 
} 

追加VCは、これがない(と私はこれを完全に誇りに思ってないんだけど、それは動作します)...

- (void)thingIsReadyToAdd { 

    SEL selector = @selector(addingVcDidCreateAnObjectToAdd:); 
    [self.delegate performSelector:selector withObject:objectToAdd afterDelay:1.5]; 
    // 1.5 is on the long side, since the vc transition is about 0.5, so 1.0 is okay 
} 

で私の私はより一般的なデリゲートプロトコルを使用して、最初のパラメータとしてaddingVCを渡しましたが、遅延でこれを行うには冗長なNSInvocationが必要なので、ここでは省略しました。私も悩まされている質問に+1してください。私は他人の解決策が不思議です。