天天看點

監聽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)

    }

//其他頁面同