2

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

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

4

1 に答える 1

1

これは、NSFetchedResultsコントローラーがある場合とない場合の良い質問です。モデルを監視しているテーブルvcがあり、別のViewControllerからポップまたは却下した後にアニメーション化された変更をユーザーに表示する必要があります。

おそらくもっと良い方法がありますが、最近同様の状況で私がしたことは、子会社(プッシュまたはモーダルプレゼンテーション)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。他の人の解決策に興味があります。

于 2012-04-09T03:12:56.327 に答える