iOS与界面相关的有push、pop、present、dismiss。
一、pop与push
1.1 push
例:
- (void)pressNext {
SecondViewController *vc2 = [[SecondViewController alloc] init];
[self.navigationController pushViewController: vc2 animated: YES];
}
pushViewController方法传入两个参数,其中第一个参数是指推出的视图,第二个参数指是否启用动画效果。
1.2 pop
例:
- (void)pressFront {
[self.navigationController popViewControllerAnimated: YES];
}
- (void)pressRoot {
[self.navigationController popToRootViewControllerAnimated: YES];
}
其中popViewControllerAnimated是指是否启用动画效果弹出当前视图到上一级视图。
popToRootViewControllerAnimated是否启用动画效果弹出当前视图到根视图。
二、present与dismiss
2.1 present
iOS中的present是一种用于展示视图控制器的方法。它通常用于在当前视图控制器的上下文中以模态方式展示另一个视图控制器。使用present方法展示的视图控制器将会覆盖当前视图控制器,并且用户必须先关闭展示的视图控制器才能回到之前的视图控制器。present方法可以接收多个参数,包括要展示的视图控制器、展示方式、展示动画等。在展示结束后,还可以通过dismiss方法将展示的视图控制器移除并返回到之前的视图控制器。
push 和 present都可以推出界面,但是present推出的是模态视图。
present一般用于不同业务界面的切换,push一般用于同一业务不同界面间的切换。
push与pop对应,present与dismiss对应。
present只能逐级返回,而push的所有视图由视图栈控制,可以返回上一级,也可以返回根视图、其他视图。
presentViewController是iOS中的一个方法,用于以模态方式展示另一个视图控制器。例:
- (void)pressNNext {
SecondViewController *vc2 = [[SecondViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:vc2];
[self presentViewController:navigationController animated:YES completion:nil];
}
其中,completion参数表示展示完成后要执行的闭包。
调用presentViewController方法后,该方法会将要展示的视图控制器以模态方式覆盖当前的视图控制器,并且用户必须先关闭展示的视图控制器才能回到之前的视图控制器。展示的视图控制器可以通过dismiss方法关闭并返回到之前的视图控制器。
模态视图即临时视图,它只能返回上一级。
2.2 dismiss
例:
- (void)pressFFront {
[self dismissViewControllerAnimated:YES completion:nil];
}