我这边系统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)
}
//其他页面同