2013-05-20 54 views
15

Tôi đang tải lười cho UITableView vì vậy tôi đang cố gắng tải lại các hàng riêng lẻ khi các hình ảnh được cập nhật. Tuy nhiên tôi đang chạy vào một vấn đề lạ.UITableView reloadSection và reloadRowsAtIndexPaths gây ra hoạt ảnh lạ

Khi tôi gọi,

[self.bubbleTableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationNone]; 

HOẶC

[self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone]; 

Khi tôi đặc biệt nói Không Animation nó vẫn sinh động và các hình ảnh động là hình ảnh chiếm toàn bộ tế bào và bị thu hẹp nhanh chóng vào kích thước bình thường . Ngoài ra, nếu tôi thay đổi nó thành bất kỳ hoạt ảnh nào khác, nó sẽ thực hiện cùng một hoạt ảnh bất kể cài đặt nào.

Nếu tôi bình luận hoặc là một trong số đó và chỉ sử dụng reloadData nó hoạt động tốt, nhưng tôi không muốn reloadData vì lý do hiệu suất của reupdating các tế bào không cần cập nhật.

Cảm ơn!

+0

cùng một vấn đề ở đây. bạn đã giải quyết nó chưa –

Trả lời

36

Here was an answer

[UIView setAnimationsEnabled:NO]; 
[self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone]; 
[UIView setAnimationsEnabled:YES]; 

Nó làm việc cho tôi.

UPD. Cùng với khối bởi @ Safak-Ghê-xe

[UIView performWithoutAnimation:^{ 
    [self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone]; 
}]; 

SWIFT

UIView.performWithoutAnimation { 
      self.bubbleTableView.reloadSections(NSIndexSet(index: indexPath.section), withRowAnimation: UITableViewRowAnimation.None) 
     } 
0

Sử dụng cellForRowAtIndexPath: để chỉ cập nhật các tế bào bạn quan tâm đến

+0

Tôi không gặp vấn đề với việc cập nhật những cái tôi quan tâm, nhưng tôi đang gặp sự cố khi cập nhật các ô cụ thể mà không có hoạt ảnh kỳ lạ này. – Alan

+0

Nhưng nếu bạn nhận được ô (với cellForRowAtIndexPath), bạn có thể cập nhật hình ảnh trong ô. Sẽ không có hoạt ảnh, bởi vì bạn không gọi bất kỳ phương thức tải lại nào *. – Markus

+0

hmm .. Tôi đang cập nhật hình ảnh trong ô, nhưng vấn đề tôi gặp phải là hình ảnh không cập nhật cho đến khi tôi tải lại dữ liệu hoặc nếu ô tắt màn hình và quay lại. – Alan

-1

. Tôi thấy điều này xảy ra với tôi trên iOS Simulator. Sau một vài lần tải lại, nó hoạt động bình thường không có hoạt ảnh. Có thể chỉ là một lỗi trong trình mô phỏng.

+1

cũng đang xảy ra trên thiết bị –

7

Dưới đây phương pháp làm việc cho tôi: (dành cho iOS 7 và tốt hơn)

[UIView performWithoutAnimation:^{ 
    [tableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone]; 
}];