iOS判断当前控制器是push还是present推出的
- (BOOL)isLaunched{
if (!self.navigationController) {
return NO;
}
NSArray *viewcontrollers = self.navigationController.viewControllers;
if (viewcontrollers.count>=1) {
if ([viewcontrollers objectAtIndex:viewcontrollers.count-1]==self && viewcontrollers[0] != self ) {
return YES;
}
}
return NO;
}
//&& viewcontrollers[0] != self 排除了直接present出导航控制器包装的控制器的问题
AYHForgotPwdViewController *forgetPwdVc = [[AYHForgotPwdViewController alloc]init];
AYHNvagationViewController *nav = [[AYHNvagationViewController alloc]initWithRootViewController:forgetPwdVc];
[self presentViewController:nav animated:NO completion:nil];
这种写法 在AYHForgotPwdViewController 会判断为不是push出来的, 实际上就只是控制器的
结合上面方法,统一处理控制器的返回问题
- (void)back{
if (self.isLaunched) {
[self.navigationController popViewControllerAnimated:YES];
}else{
[self dismissViewControllerAnimated:YES completion:nil];
}
}