滚动到顶部UITableView,双击UITabBarItem

Das*_*oga 5 uitabbarcontroller uitableview uitabbaritem ios swift

我想在他们的列表中模拟twitter或instagram的行为:

在UITabBarItem中双击时,列表将滚动到顶部.有人知道我该怎么做?我的UITabBarController中有4个项目,所有这些都是列表,所以我想为所有人做这件事.

问题是当我在mi列表的推送视图中点击条形项时,此函数在获取导航的根视图控制器之前调用并检测双击.

我希望能解决我的问题.

var previousController: UIViewController?

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
    if previousController == viewController{
        if let navVC = viewController as? UINavigationController, vc = navVC.viewControllers.first as? HomeViewController {
            vc.tableBusinessList.setContentOffset(CGPointZero, animated: true)
            print("same")
        }
    }else{
        print("No same")
    }
    previousController = viewController
}
Run Code Online (Sandbox Code Playgroud)

这种行为是不正确的.当我使用标签栏项目弹出视图时,根视图位于单元格0上

在此输入图像描述

Oli*_*son 10

好的,我认为最好的方法是检查带有tableView的viewController是否可见,如果不可见,则不要调用set content offset.

所以:

var previousController: UIViewController?

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
    if previousController == viewController {
        if let navVC = viewController as? UINavigationController, vc = navVC.viewControllers.first as? HomeViewController {

            if vc.isViewLoaded() && (vc.view.window != nil) {
                // viewController is visible
                vc.tableBusinessList.setContentOffset(CGPointZero, animated: true)
            }

            print("same")
        }
    }else{
        print("No same")
    }

    previousController = viewController

}
Run Code Online (Sandbox Code Playgroud)