2012-11-14 29 views
10

Tôi đang sử dụng UICollectionView trong ứng dụng của mình bằng trình nhận dạng cử chỉ trên các ô riêng lẻ cho phép người dùng "trượt mở" ô để hiển thị thêm dữ liệu bên dưới.Tắt sử dụng lại ô trên UICollectionView

Vấn đề là, tôi tải lại dữ liệu trong Bộ sưu tập rất thường xuyên; khi ứng dụng nhận được bản cập nhật 3 giây một lần hoặc lâu hơn. Điều này dẫn đến hành vi không mong muốn với các ô collectionview đang được sử dụng lại trong khi một ô đang trong quá trình bị trượt.

Người dùng sẽ bắt đầu trượt một ô, ứng dụng sẽ nhận được bản cập nhật, tải lạiData và một ô khác sẽ bắt đầu nhận được cử chỉ thay thế và bắt đầu trượt.

Tôi đã thử tắt cập nhật của ứng dụng trong khi trang trình bày đang diễn ra, nhưng điều đó gây ra các biến chứng khác trong ứng dụng, vì vậy tôi tự hỏi liệu có cách nào để vô hiệu hóa việc sử dụng lại ô hay không (tôi sẽ chỉ có tối đa 20 ô vì vậy tôi không nghĩ rằng sẽ có một sự sụt giảm lớn về hiệu suất).

Cảm ơn bạn!

+1

Bạn có đang gọi lại reloadData không? Điều gì sẽ xảy ra nếu bạn chỉ tải lại các ô cụ thể, ví dụ: tất cả những thứ ngoại trừ một cái đang được vận hành? – jrturton

Trả lời

2

Tại sao bạn không sử dụng cờ như needsReload và đặt nó, nếu có dữ liệu mới. Sau một slide bạn kiểm tra lá cờ đó và tải lại collectionView, nếu cần thiết? Điều này không hoạt động?

Nếu bạn không muốn sử dụng lại ô, chỉ cần sử dụng scrollView mặc định và đặt tất cả các chế độ xem của bạn vào đó !?

-5

Vô hiệu hóa việc sử dụng lại rất đơn giản. Chỉ cần không sử dụng phương pháp dequeueReusableCell. Thay vì chỉ phân bổ, hãy khởi động các ô của bạn. Tôi sẽ cẩn thận về hiệu suất và ý nghĩa bộ nhớ khi làm như vậy ...

+0

Tôi đã thử rằng, tôi điền vào một mảng với nhiều tế bào tôi cần thiết, và trong cellForRowAtIndexPath tôi đặt: 'MyCustomCell * cell = [self.arrayOfCells objectAtIndex: indexPath.row];' Nhưng ứng dụng đổ vỡ với những điều sau đây lỗi. '*** Lỗi xác nhận trong - [UICollectionView _createPreparedCellForItemAtIndexPath: withLayoutAttributes:]' – dKrawczyk

+0

@dKrawczyk: Bạn có thể hiển thị thông báo lỗi hoàn chỉnh không? –

+0

'*** Lỗi xác nhận trong - [UICollectionView _createPreparedCellForItemAtIndexPath: withLayoutAttributes:], /SourceCache/UIKit_Sim/UIKit-2372/UICollectionView.m: 1138' – dKrawczyk

Các vấn đề liên quan