注册

iOS之切换UITabBar再次加载网络数据

我们在开发中,常常遇到这样的问题,点击某一个TabBar后,本TabBar上的控制器页面数据不刷新,原因是因为在App启动之后,第一次点击本TabBar后页面已经走了viewDidLoad,所以除了重新启动不会再次走viewDidLoad,如果把请求方法写在viewDidLoad中,当然不会再次触发啦,但是,苹果早考虑到这个问题,不用咱们写通知事件什么的,废话有点多了,看代码详解:

首先需要在本控制器签订TabBar的协议

UITabBarControllerDelegate

一定要看清楚协议,如果警报 Assigning to 'id<UITabBarControllerDelegate> _Nullable' from incompatible type 'RCFollowOrderViewController *const __strong'那么就证明你的协议签成了UITabBarDelegate

在viewDidLoad 请求一次 

[self requestdata];

协议方法:


//点击的时候触发的方法


-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{


    if (self.tabBarController.selectedIndex==1) {


        [self requestdata];


    }


}



//防止同一个页面一直点击tabbar 的方法


-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{


    UIViewController *tbselect=tabBarController.selectedViewController;


    if([tbselect isEqual:viewController]){


        returnNO;


    }


    returnYES;


}


如果想要点击TabBar一次,就刷新一次界面,就不写防止重复点击的代理方法,试下效果,搞定!


转自:https://www.jianshu.com/p/f52013ef1eea

0 个评论

要回复文章请先登录注册