A页面到B,B到C,C返回A时候触发hub弹窗
2018-03-07 本文已影响0人
叶熙雯
你的小可爱已上线
需求是这样的:要求我在一个列表页是A 进入社团主页是B 从B进入社团详情页是C。在C中退出社团 直接返回到A列表页 在A中显示hub
在C的页面,进行返回上个A页面时候,在navigationController
里面遍历所有的viewController
,判断其中一个页面是不是A页面的类(以下我以JHClubInfoViewController
为A页面的名字),然后找到A的页面并且给A页面的块赋值。
[self.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:[JHClubInfoViewController class]]) {
JHClubInfoViewController *vc = (JHClubInfoViewController *)obj;
vc.hudText = ^(){
WindowsHUDShowTextWithDelayTime(@"修改备注成功");//我hub的宏
};
[self.navigationController popToViewController:vc animated:YES];
}
}];
A页面中的.h
文件中声明一个块为了接hub信息显示的:
xxx.h中
Strong void (^hudText)();
A页面的.m
文件的- (void)viewWillAppear:(BOOL)animated
进行实现,如果_hudText
有被调用就会显示
xxx.m
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
if (_hudText) {
_hudText();
_hudText = nil;
}
}
附上我的hub
宏:
#define WindowsHUDShowTextWithDelayTime(text) UIWindow * view = [[[UIApplication sharedApplication] delegate] window];\
NSArray *windows = [UIApplication sharedApplication].windows;\
for (id windowView in windows) {\
NSString *viewName = NSStringFromClass([windowView class]);\
if ([@"UIRemoteKeyboardWindow" isEqualToString:viewName]) {\
view = windowView;\
break;\
}\
}\
[view makeToast:text duration:1 position:CSToastPositionBottom]
需要的人可以直接copy走吧!记得帮我点点❤ 爱你哟!