刚好在做项目的时候 发现有很多APP有tabbar再次点击刷新的功能,其中“腾讯新闻”的做的效果最好,于是网上查了点资料,但是大都是 复制-粘贴的模式,而且有各种不清不楚的问题,于是自己随便写了下,自己的思路
1.在AppDelegate.h中添加一个属性用来标记tabbar上次的点击(大部分的项目最后都是在AppDelegate设置UITabBarController为根控制器)
/** 标记tabbar上次的点击 并且赋初值 小于0的都可以 我这里是赋初值为-1 */
@property (nonatomic, assign)NSInteger index;
2.设置UITabBarController的代理UITabBarControllerDelegate为AppDelegate
3.代理方法中处理
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
//1.先判断当前点击的index是否与标记的相等(所以初值 self.index = -1 了巧妙的实现了再次点击的功能)
if (self.index == tabBarController.selectedIndex) {
//2.通过发通知,交给响应的控制器去做具体的操作,传入self.index是为了具体区分标记做判断
[[NSNotificationCenter defaultCenter] postNotificationName:@"再次点击了" object:@(self.index)];
}
//3.再把点击的index赋值给标记的self.index
self.index = tabBarController.selectedIndex;
}