iOS集合

iOS判断当前控制器是push还是present推出的

2019-03-22  本文已影响0人  KB_MORE

- (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];

    }

}

上一篇 下一篇

猜你喜欢

热点阅读