2013-06-25 33 views
6

Tôi muốn biết khi nào UICollectionViewCell được hiển thị trên màn hình thực tế. cellForRowAtIndexPath là không đủ, vì các tế bào không thực sự nhìn thấy vào thời điểm này. didEndDisplayingCell không đủ, vì nó được gọi khi ô bị loại bỏ khỏi tầm nhìn.Làm cách nào để xác định thời điểm hiển thị UICollectionViewCell?

UITableViewDelegate có phương pháp willDisplayCell mà tôi đã thấy hữu ích cho những nội dung tương tự trong quá khứ, nhưng dường như không tồn tại trong UICollectionViewDelegate.

Làm cách nào để xác định thời điểm ô được đưa vào màn hình?

Trả lời

0

-[UICollectionView visibleCells] trả về một NSArray của tất cả các tế bào có thể nhìn thấy trên screnn

+0

Đây có thể là một phần của giải pháp, nhưng không có nơi nào tốt mà tôi có thể xác định để gọi các ô hiển thị. Tôi có thể làm điều đó trong các sự kiện di chuyển, nhưng sau đó tôi phải theo dõi những tế bào mà tôi đã xác định là có thể nhìn thấy ... có rất nhiều sự phức tạp ở đó mà tôi không nghĩ là khả thi. – Mike

+1

điều này có thể báo cáo các ô không có trên màn hình. – Kyle

4

Tạo một lớp con của UICollectionViewCell. Override phương pháp didMoveToWindow của nó:

- (void)didMoveToWindow { 
    if (self.window != nil) { 
     // I am now in the window's view hierarchy and thus “on screen”. 
    } 
} 

Về mặt kỹ thuật, các tế bào vẫn có thể không nhìn thấy được, hoặc là bởi vì nó bên ngoài giới hạn hữu hình của cửa sổ, hoặc bởi vì nó được bao phủ bởi cái nhìn khác. Nhưng bình thường không phải của những người sẽ là trường hợp.

Cũng lưu ý rằng nếu ô được sử dụng lại, nó có thể không bị xóa và được thêm lại vào phân cấp chế độ xem. Chế độ xem bộ sưu tập chỉ có thể thay đổi khung của ô. (Tôi biết UITableView thực hiện việc này với các ô xem bảng như iOS 6.0.) Trong trường hợp đó, bạn sẽ không nhận được thông báo didMoveToWindow khi ô được sử dụng lại cho một mục khác.

Nếu bạn giải thích lý do tại sao bạn muốn biết khi nào ô được hiển thị, chúng tôi có thể cung cấp cho bạn câu trả lời tốt hơn.

+0

Để bắt đầu, tôi chỉ đang tìm kiếm sự kiện phân tích để tôi có thể so sánh chế độ xem của các ô với các hành động khác nhau. Nhưng tôi cũng đang nghĩ về một số hoạt ảnh sáng tạo mà tôi không muốn bắt đầu cho đến khi ô thực sự hiển thị với người dùng. – Mike

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