I am learning how to work with TableViews and I am wondering how can I figure out if the tableView is scrolling up or down ? I been trying various things such as this but it hasn't worked granted that below is for a scrollview and I have a TableView . Any suggestions would be great as I am new at this ...
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { if scrollView.panGestureRecognizer.translation(in: scrollView).y < 0 { print("down") } else { print("up") } }
This is what I have in my tableView code
func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int { return Locations.count } func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { if indexPath.row == self.Posts.count - 4 { reloadTable(latmin: self.latmin,latmax: self.latmax,lonmin: self.lonmin,lonmax: self.lonmax,my_id: myID) print("Load More") } } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "HomePageTVC", for: indexPath) as! NewCell cell.post.text = Posts[indexPath.row] cell.fullname.setTitle(FullName[indexPath.row],for: UIControlState.normal) return cell }
Like @maddy said in the comment of your question, you can check if your UITableView
is scrolling by using the UIScrollViewDelegate
and further more you could check which direction it scrolls to by using both scrollViewDidScroll
and scrollViewWillBeginDragging
functions
// we set a variable to hold the contentOffSet before scroll view scrolls var lastContentOffset: CGFloat = 0 // this delegate is called when the scrollView (i.e your UITableView) will start scrolling func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { self.lastContentOffset = scrollView.contentOffset.y } // while scrolling this delegate is being called so you may now check which direction your scrollView is being scrolled to func scrollViewDidScroll(_ scrollView: UIScrollView) { if self.lastContentOffset < scrollView.contentOffset.y { // did move up } else if self.lastContentOffset > scrollView.contentOffset.y { // did move down } else { // didn't move } }
Furthermore: You don't need to subclass your UIViewController
with UIScrollViewDelegate
if you've already subclassed your UIViewController
with UITableViewDelegate
because UITableViewDelegate
is already a subclass of UIScrollViewDelegate
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With