这次要实现一个类似新浪微博那种再次点击当前tabBarItem刷新当前页面的功能,在网上找了一些方法都觉得不合适,最后还是发现一个最简单的仅需要几行代码也不需要自定义的方法,在这边记录一下!
1.在TabBarController遵守代理UITabBarControllerDelegate,并设置self.delegate = self;
2.实现代理方法
在这个方法中,tbc.selectedViewController是上一次点击对应的controller,vc是本次点击对应的controller,当两个controller相同时,说明你两次点击的tabBarItem相同,这个时候发送通知【因为我只需要在首页进行刷新,所以同时规定了选中的index等于0时才发送通知】
/**
tbc.selectedIndex -- 上次点击的index
tbc.selectedViewController -- 上次点击的controller
*/
- (BOOL)tabBarController:(UITabBarController *)tbc shouldSelectViewController:(UIViewController *)vc {
if ([tbc.selectedViewController isEqual:vc] && tbc.selectedIndex == 0) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"doubleClick" object:nil];
}
return YES;
}
3.在对应controller里监听通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scrollAndLoad) name:@"doubleClick" object:nil];
实现方法【这里可以直接用MJRefresh的beginRefreshing方法,直接就可以回滚到顶部,并且刷新】
- (void)scrollAndLoad {
//这个方法可直接实现回滚到顶部并且开始刷新
[_streetSnapTableView.mj_header beginRefreshing];
}
OVER!