监听TabBar点击事件 使系统tabar的item 点击刷新页面 swift版

我这边系统tababar切换页面的时候会保留在之前这个页面浏览的位置再点击才会刷新 现在要求切换的时候就要刷新, 除了自己重写tababr之外我的解决方法是这样的

用UITabBarDelegate 监听item的点击事件 然后发送通知刷新 (用KVO应该更好但是好像swift不太会用 所以用简单的通知)

附上代码

//监听tabbar

import UIKit


class TabBarController: UITabBarController {


    override func viewDidLoad() {

        super.viewDidLoad()

//这边不用这个代码swift自动集成了代理 直接用就可以了

//        self.tabBar.delegate = self


    }


    //代理点击事件

    override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {

        print(item.tag)

        if item.tag == 1 {

           NSNotificationCenter.defaultCenter().postNotificationName("homeRefresh", object: nil, userInfo: nil)

            

        }

        else if item.tag == 3

        {

            NSNotificationCenter.defaultCenter().postNotificationName("profileRefresh", object: nil, userInfo: nil)

        }

        else

        {

            NSNotificationCenter.defaultCenter().postNotificationName("discoverRefresh", object: nil, userInfo: nil)

        

        }

    }

    


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

    

}




//接受页面 这边是在导航条的下面 所以用poptorootviewcontroller实现刷新页面

 override func viewDidLoad() {

        super.viewDidLoad()

 NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshPage", name: "homeRefresh", object: nil)

}

 fun refreshPage()

    {

        if self.navigationController != nil

        {

            //刷新页面

        self.navigationController?.popToRootViewControllerAnimated(false)

        }

    }

deinit

    {

        NSNotificationCenter.defaultCenter().removeObserver(self)

    }



//其他页面同


你可能感兴趣的:(功能实现)