Tôi có một UITableView với pagingEnabled. Mỗi ô sẽ chiếm diện tích xem của bảng. Có nghĩa là, mỗi ô có chiều cao và chiều rộng giống như bảng. Tôi đang sử dụng các ô tùy chỉnh có thuộc tính tên. Tôi muốn hiển thị tên của ô hiện tại (có thể xem) trong nhãn. Điều này làm việc tốt cho các tế bào đầu tiên và cuối cùng nhưng bất cứ điều gì inbetween không phải là dễ dàng như vậy. Vấn đề là cellForRowAtIndexPath được gọi hai lần cho các ô giữa này. Dưới đây là hình thức di chuyển từ ô đầu tiên đến ô cuối cùng và sau đó quay lại. Tôi đã liệt kê các chỉ số theo thứ tự như vụ cháy cellForRowAtIndexPath cho hàng đó:Nhận ô hiển thị từ UITableView pagingEnabled
Row indexPath.row
0 0 //view loads and table appears
1 1,2 //user scrolls to second cell. cellForRowAtIndexPath fires twice. First time indexPath.row is one and second time it is two. This causes cell two's name to display in the label, rather than cell one.
2 2,3
3 3
//user starts scrolling back to first cell
2 1,2
1 1,0
0 0
tôi có thể thiết lập sử dụng một đối tượng NSDate để phát hiện nếu anh ở một hàng trung lưu. Bằng cách phân biệt thời gian trước với hiện tại, tôi sẽ biết. Tuy nhiên, nếu người dùng cuộn nhanh qua các ô, điều đó có thể không hoạt động. Có cách nào khác để làm điều đó không?
Tôi đã thử sử dụng các biến thể của thuộc tính visiblecells nhưng không hiệu quả. UITableView sẽ tải ô tiếp theo ngay cả khi nó không hiển thị, khiến nó trở thành một phần của các ô hiển thị.
Vấn đề duy nhất với điều này là chúng không được sắp xếp ... có cách nhanh chóng để sắp xếp chúng hay thêm chúng vào mảng đúng thứ tự không? –
+1 câu trả lời này cũng là câu hỏi của tôi. –
bạn cũng có thể nhận được các ô hiển thị với [tableView visibleCells]; – George