2012-08-09 76 views
10

我想知道是否有任何可能趕上如果動畫deleteRowsAtIndexPaths期間發射並結束動畫結束了嗎?我所試圖做的是去除除了一個我拍了拍從UITableView的一些所有行。接下來,我想插入幾行到同一個UITableView。這兩種操作都在中隔離beginUpadate/endUpdate塊執行。問題是,之前刪除動畫結束後,插入動畫開始,我想是因爲插入的行從外部Web服務來就被解僱了一個又一個。如何趕上deleteRowsAtIndexPaths

我想在包裝中插入和刪除方法(在UITableView子類中)的方法中,我可以用自定義替換標準動畫,並且在第一次結束時使用objective-c塊一個接一個地開始,但它似乎是不可變的或者我無法做到。

在此先感謝您的幫助!

回答

14

我相信,在animateWithDuration包裹你的表更新將工作:

,我發現這裏對堆棧溢出建議
[UIView animateWithDuration:0.0 animations:^{ 
    [coursesTable beginUpdates]; 
    … 
    [coursesTable endUpdates]; 
} completion:^(BOOL finished) { 
    // Code to run when table updates are complete. 
}]; 

其他方法並沒有爲我工作。

我在同一時間使用了這種技術,並且對它進行了足夠的驗證,以驗證完成塊是在我調用該表的endUpdates方法並調用它的時間似乎合理之後調用的,但是我重寫了我的代碼,因此我沒有在我完全確認動畫實際完成之前,還需要它。

+2

男人你是太棒了!感謝這個技巧 – Abolfoooud 2013-04-25 09:36:15

0

使用CATransaction捕捉任何動畫的完成

CATransaction.begin() 
CATransaction.setCompletionBlock({ 
    // completion 
}) 
// do your animation here 
CATransaction.commit()