最近项目遇到个问题,有个界面数据由多个接口来提供,使用MJRefresh刷新时候出了遇到了问题,不知道该何时结束刷新。。。
开始想在每个请求的block中加个值判断,然后处理刷新,尼玛要是有100个接口这得写100遍啊,,,烦
翻了以下资料发现了强大的GCD帮我解决了问题~
以下下是部分代码:
dispatch_group_t group = dispatch_group_create();
//获取推荐计划
dispatch_group_enter(group);
[PXBEngine getRecommandWithID:@"" Success:^(NSDictionary *dict) {
NSLog(@"get recommand project success");
dispatch_group_leave(group);
} failure:^(NSError *error) {
dispatch_group_leave(group);
}];
//获取最新三条项目
dispatch_group_enter(group);
[PXBEngine getLatestProjectSuccess:^(NSDictionary *dict) {
NSLog(@"get latest project success");
dispatch_group_leave(group);
} failure:^(NSError *error) {
dispatch_group_leave(group);
}];
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
[self reloadData];
[self.mj_header endRefreshing];
NSLog(@"tableView reloadData success");
});
少些好多代码,哈哈哈
看完上面👆这个再讲一个偷懒的经历,
由于我的项目首页展示了很多内容,所以隐藏了首页导航栏。
但是跳转到其他页面时候要显示导航栏,所以要在每个跳转页面加上这么一段代码:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationController.navigationBar.hidden = NO;
}
首页跳转的页面有十几个,这要复制粘贴十几遍啊,大写的烦!
本想去看看能不能在push pop的时候搞点事情,无意中发现了这个
// Called when the navigation controller shows a new top view controller via a push, pop or setting of the view controller stack.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
试着用了一下,正是我想要的结果,哈哈