在iOS中,界面跳转是最普通的,但是其中的几种方法各有讲究,虽然自己也不是很深究,但把现有的理解记录下来:在现在最为简单的是storyboard中的连线了,直接在界面上操作,都懂,里面的push还是model看自己的选择,不过这样又个不好就是你想再界面跳转的时候做点什么不是很好设置,所以大部分还是代码控制跳转。
下面主要是记录下代码跳转,
先提一下storyboard的跳转,找线:
// 根据指定线的ID跳转到目标Vc
[self performSegueWithIdentifier:@SendValue sender:self];
然后:
- (
void
)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// segue.identifier:获取连线的ID
if
([segue.identifier isEqualToString:
@SendValue
]) {
// segue.destinationViewController:获取连线时所指的界面(VC)
ReceiveViewController *receive = segue.destinationViewController;
receive.name =
@Garvey
;
receive.age =
110
;
// 这里不需要指定跳转了,因为在按扭的事件里已经有跳转的代码
// [self.navigationController pushViewController:receive animated:YES];
}
}
这样也可以设置。
还是记录代码设置吧:
在oldC中调用:
[ self presentViewController:newC animated: YES completion:nil];
在newC中调用:
[ self dismissViewControllerAnimated: YES completion: nil ];
2、这种方法系统的动画是从下往上推,还有一种也是无导航,而是一开始设置的,就是直接更改 UIWindow 的 rootViewController:MainViewController *vc = [STORYBOARDinstantiateViewControllerWithIdentifier:@"MainVC"];
self.window.rootViewController = vc;
在oldC的btn的监听方法中调用:
[self.navigationController pushViewController:newC animated:YES]; //跳转到下一页面
在newC的方法中调用:
[self.navigationController popViewControllerAnimated:YES]; //返回上一页面
当有多次跳转发生并希望返回根控制器时,调用:
[ self .navigationController popToRootViewControllerAnimated: YES ]; //返回根控制器,即最开始的页面
4、还有一种是倒入一个特别导航类的:MainViewController *mianVC = [self.storyboardinstantiateViewControllerWithIdentifier:@"MainVC"];
UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:mianVC];
[self presentViewController:navCon animated:YES completion:nil];
其实也相当于第一种推出导航方式,动画也一样。
而push的推出是从左往右推的动画。
一般push比较好用,因为push后可以把一些旧界面直接释放,而present的,则不会。