美文网首页iOS集合
iOS判断当前控制器是push还是present推出的

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

作者: KB_MORE | 来源:发表于2019-03-22 13:50 被阅读0次

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

    }

}

相关文章

网友评论

    本文标题:iOS判断当前控制器是push还是present推出的

    本文链接:https://www.haomeiwen.com/subject/bmbkpxtx.html