IOS 视图控制器的push与present

push与present都可以推出新的界面。
present与dismiss对应,push和pop对应。
present只能逐级返回,push所有视图由视图栈控制,可以返回上一级,也可以返回到根vc,其他vc。

那么混合使用的时候,怎么判断返回上一个页面使用哪一种方式呢?

判断当前viewcontroller是push还是present的方式显示的

NSArray *viewcontrollers=self.navigationController.viewControllers;
if (viewcontrollers.count>1) {
      //push方式
      [self.navigationController popViewControllerAnimated:YES];
}
else{
    //present方式
    [self dismissViewControllerAnimated:YES completion:nil];
}

以上方法。

但是,这并不能保证不出错误!考虑到规范性,和可控性。

我们还是添加一个属性
@property(nonatomic,assign)BOOL isPresent;
根据属性值来判断back方式。

   if (self.isPresent) {
        
        [self dismissViewControllerAnimated:YES completion:nil];
        
    } else {
        
        [self.navigationController popViewControllerAnimated:YES];
    }

你可能感兴趣的:(IOS 视图控制器的push与present)