美文网首页
Swift 点击TabBar滚动到顶部并且加载数据

Swift 点击TabBar滚动到顶部并且加载数据

作者: Westrice | 来源:发表于2017-06-16 17:19 被阅读0次

    首先,需要用到UITabBarController的代理

    1.在WestriceMainViewController设置代理

        // 设置代理
         delegate = self
    

    2.用extension分割代码,写代理方法

    参数viewController就是TabBar中的控制器

    /// 在选择TabBarItem的时候会调用这个方法,
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        
            //1.获取控制器在数组中的索引位置
        let index = (childViewControllers as NSArray).index(of: viewController)
           //根据selectedIndex来标注当前点击的那个item界面
           print(selectedIndex)
           //2.通过selectedIndex判断当前的索引是否是当前页面index,并且重复点击的索引页是selectedIndex
            if selectedIndex == 0 && index == selectedIndex {
            //3. 让表格滚动到顶部
            //拿到导航控制器的栈底控制器也就是要滚动到顶部的控制器
            let nav = childViewControllers[0] as! UINavigationController
            let vc = nav.childViewControllers[0] as! WestriceHomeViewController
            //通过秀才contentOffset滚动到顶部,因为是自定义所有y值要有个-64
            vc.tableView?.setContentOffset(CGPoint.init(x: 0, y: -64), animated: true)
            //这里需要做个延迟加载数据,因为同时滚动和加载数据会卡住
            DispatchQueue.main.asyncAfter(wallDeadline: .now() + 1, execute: { 
                vc.loadData()
            })
        }
        
        
        
        //判断目标控制器是否是UIViewController
        //如果是中间的按钮就不跳转
        return !viewController.isMember(of: UIViewController.self)
        
       
    }

    相关文章

      网友评论

          本文标题:Swift 点击TabBar滚动到顶部并且加载数据

          本文链接:https://www.haomeiwen.com/subject/bzkmqxtx.html