首页 > 解决方案 > 像 Facebook 一样向下滚动后如何从顶部滚动 - Swift 4.2

问题描述

我想实现像 Facebook 应用程序这样的滚动功能,如果向下滚动页面,请点击标签栏项目,然后点击它从顶部开始滚动的同一个标签栏项目。

这是我的代码 -

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {

        let indexOfTab = tabBar.items?.index(of: item)
        if indexOfTab == 0{
            let feed = HomeFeedViewController()
            feed.scrollToTop()
            print("pressed tabBar: \(String(describing: indexOfTab))")
        }else if indexOfTab == 1{
            print("pressed tabBar: \(String(describing: indexOfTab))")

        }else if indexOfTab == 2{
            print("pressed tabBar: \(String(describing: indexOfTab))")

        }else if indexOfTab == 3{
            let feed = QueueViewController()
            print("pressed tabBar: \(String(describing: indexOfTab))")

        }else if indexOfTab == 4{
            print("pressed tabBar: \(String(describing: indexOfTab))")

        }

    }


 func scrollToTop(){

        feedsTableView.setContentOffset(.zero, animated: true)
    }

标签: iosswifttableview

解决方案


请尝试我的代码

var canScrollToTop:Bool = true
    func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {

        // Allows scrolling to top on second tab bar click
        if (viewController.isKindOfClass(CustomNavigationBarClass) && tabBarController.selectedIndex == 0) {
            if (viewControllerRef!.canScrollToTop) {
                viewControllerRef!.scrollToTop()
            }
        }
    }


    // Scrolls to top
    func scrollToTop() {
        self.View.setContentOffset(CGPoint.zero, animated: true)
    self.tblView.setContentOffset(CGPoint.zero, animated: true)
    self.collView.setContentOffset(CGPoint.zero, animated: true)
    }


    // Called when the view becomes available
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        canScrollToTop = true
    }

    // Called when the view becomes unavailable
    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        canScrollToTop = false
    }

推荐阅读