2012-04-09 122 views
2

我有一個UITableView基於NSFetchedResultsController。爲了在表格中插入新行,我打開了一個模式視圖控制器,然後點擊保存按鈕,該按鈕關閉模態視圖並導致我的代理方法(willChangeContent,didChangeObject等)觸發,這會激活插入一個新的細胞。一切都很好,但我希望用戶見證這個動畫,當模態視圖消失時,動畫已經完成。延遲NSFetchedResultsController委託方法

如何才能延遲此動畫,直到模態視圖完全消失,以便用戶可以見證動畫?

回答

1

這是帶NSFetchedResults控制器或不帶NSFetchedResults控制器的好問題 - 您有一個觀察模型的表vc,並且您希望用戶在彈出或從其他視圖控制器關閉後看到動畫更改。

可能有更好的辦法,但最近我在類似的情況下做的事情是讓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 
} 

在我案例中,我使用了一個更傳統的委託協議,傳遞添加VC作爲第一個參數,但這樣做延遲需要一個詳細的NSInvocation,所以我在這裏跳過它。對於那個讓我困擾的問題+1。我很好奇別人的解決方案。

相關問題