2012-08-09 43 views
10

Tôi đã tự hỏi liệu có bất kỳ khả năng nào để bắt nếu hoạt ảnh được kích hoạt trong khi deleteRowsAtIndexPaths kết thúc không? Những gì tôi đang cố gắng để làm là loại bỏ một số tất cả các hàng từ UITableView ngoại trừ một trong những mà tôi khai thác. Tiếp theo, tôi muốn chèn vài hàng vào cùng một UITableView. Cả hai hoạt động được thực hiện trong phân tách các khối beginUpadate/endUpdate. Vấn đề là trước khi xóa hoạt ảnh kết thúc, hoạt ảnh chèn bắt đầu và tôi muốn nó được kích hoạt cái khác bởi vì các hàng được chèn đến từ webservice bên ngoài. Tôi đã suy nghĩ về gói chèn và xóa phương pháp (trong UITableView subclass) trong phương pháp mà tôi có thể thay thế hoạt hình tiêu chuẩn với những tùy chỉnh và sử dụng khối mục tiêu-c để cháy cái khác khi kết thúc đầu tiên nhưng nó dường như imposible hoặc tôi không thể làm được.Làm thế nào để bắt đầu hoạt ảnh trong deleteRowsAtIndexPaths

Cảm ơn trước sự giúp đỡ của bạn!

Trả lời

14

Tôi tin rằng gói cập nhật bảng của bạn trong animateWithDuration sẽ làm việc:

[UIView animateWithDuration:0.0 animations:^{ 
    [coursesTable beginUpdates]; 
    … 
    [coursesTable endUpdates]; 
} completion:^(BOOL finished) { 
    // Code to run when table updates are complete. 
}]; 

Các phương pháp khác mà tôi tìm thấy gợi ý ở đây trên Stack Overflow đã không làm việc cho tôi.

Tôi đã sử dụng kỹ thuật này cùng một lúc và thử nghiệm đủ để xác minh rằng khối hoàn thành được gọi sau khi tôi gọi phương thức endUpdates của bảng và thời gian được gọi là hợp lý, nhưng tôi viết lại mã của mình cần nó nữa trước khi tôi đã hoàn toàn xác minh rằng hoạt hình đã thực sự kết thúc.

+2

người đàn ông bạn là tuyệt vời !! cảm ơn vì mẹo này – Abolfoooud

0

sử dụng CATransaction để bắt hoàn thành bất kỳ hình ảnh động

CATransaction.begin() 
CATransaction.setCompletionBlock({ 
    // completion 
}) 
// do your animation here 
CATransaction.commit() 
Các vấn đề liên quan