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