再次点击tabBarItem回滚并刷新当前页面

这次要实现一个类似新浪微博那种再次点击当前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!

你可能感兴趣的:(再次点击tabBarItem回滚并刷新当前页面)