Làm cách nào để xác định liệu người dùng đã cuộn đến ô cuối cùng/dưới cùng của UITableView?Cách xác định xem người dùng đã cuộn xuống dưới cùng của UITableView chưa?
11
A
Trả lời
28
UITableView thừa hưởng từ UIScrollView, và di chuyển điểm cho thấy một contentOffset
tài sản (tài liệu here).
Sử dụng tính năng này với một chút toán để xác định xem contentOffset có nằm trong khoảng frame.size.height
ở dưới cùng hay không.
Cập nhật: đây là một đâm vào một công thức mà sẽ cung cấp cho bạn những gì bạn muốn:
if(tableView.contentOffset.y >= (tableView.contentSize.height - tableView.frame.size.height)) {
//user has scrolled to the bottom
}
5
Sử dụng NSArray *paths = [tableView indexPathsForVisibleRows];
. Sau đó kiểm tra xem đối tượng cuối cùng trong mảng đó có phải là indexPath cho ô cuối cùng không.
Nguồn: Another Question
1
Nhờ các phiên bản iOS mới hơn, có một cách dễ dàng với các chức năng willDisplayCell:
func tableView(tableView:UITableView, willDisplayCell cell:UITableViewCell, forRowAtIndexPath indexPath:NSIndexPath) {
if (indexPath.row >= tableView.numberOfRowsInSection(0)) {
NSLog("User got to bottom of table")
}
}
Note UICollectionViews có chức năng tương tự:
func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {
}
toán học là gì? –
đã thêm công thức mà bạn có thể sử dụng ... –
Mã hầu như ở đó! Tôi có thể phát hiện đáy, nhưng khi tôi đến đáy mã trong khối nếu được gọi nhiều lần nếu người dùng giữ vị trí cuộn. Làm thế nào tôi có thể giải quyết? –