iOS-基础知识--UIStoryboardSegue简单总结
1.segue:可视化编程中连接两个页面的线条,称之为 segue。
2.iPhoneGUI开发中 segue类型主要有三种,包括 push、modal、custom。
在iPad中,segue有(5种):push、modal、popover、replace、custom类型
3.其中custom需要我们自定义 segue来完成页面间跳转。
4.segue 有三个重要属性:标识符、源控制器、 目标控制器。
- modal类型(模态转换):
1. 最常用的场景,新的场景完全盖住了旧的那个。用户无法与上一个场景交互,除非他们先关闭这个场景。
2.它是在viewControllers中的标准切换方式,包括淡出什么的,可以切换动画。
3.ModalView:就是会弹出一个view,你只能在该view上操作,而不能切换到其他的view,除非你关闭了modalView。
4.ModalView对应的segue type就是modal segue。在弹出的modalView里操作完成后,就应该dismiss the modal view scene然后切换后原视图。
- Push类型:
1.一般需要头一个界面是Navigation Controller的,它是在navigation View Controller中下一级时使用的那种从右侧划入的方式。
2.该类型是和navigation viewcontrollers一起使用。
- Popover类型:采用浮动窗口的形式把新页面显示出来。
- Replace类型:替换当期的scene。
自定义segue步骤:
步骤一 : 新建一个类继承 UIStoryboardSegue
步骤 二: 选中前 个控制器,按住control鼠标 标辅助完成连线,选 择custom。
步骤三: 选中 定义 segue,设置 segue的identifier 以及关联类。
步骤四: 在 segue类里重写perform方法(界 间跳转默认执行的方法), 自定义跳转效果。
代码部分:在自定义的继于 UIStoryboardSegue类实现部分
// 跳转时, 定义segue会自动触发此法(重写的系统方法)
/ / 这是为了跳转也可以弄成push或者模态
- (void)perform
{
//获取源控制器 (记得要引入目标和源视图控制器)
UIViewController1 *v1 = (UIViewController*)self.sourceViewController;
//获取目标控制器
UIViewController2 *v2 = (UIViewController*)self.destinationViewController;
// 自定义页面切换效果
/ / 在动画过程中,首先将 fromView 从父视图中删除,然后将 toView 添加,就是做了一个替换操作。
/ / FromView 需要移除的视图
// toView 需要显示的视图
// duration:动画持续时间
/ / options 动画类型
[UIView transitionFromView:v1.view toView:v2.view duration:10 options:UIViewAnimationOptionTransitionCurlDowncompletion:^(BOOL finished) {
//动画完成后执 的部分
// 动画只是完成了视图的切换还要使用push或者模态将视图控制器切换}];
[v1.navigationController pushViewController:vc2 animated:1]
}
还可以自定义一个push模式(多此一举只为了演示这个方法)
- (void)perform{
SourceViewController *vc = (InformationViewController *)self.sourceViewController;
DestinationViewController *vc1 = (TableTableViewController *)self.destinationViewController;
[vc.navigationController pushViewController:vc1 animated:1];
}
页面跳转传值
storyboard界面间跳转会执
// 视图控制器里面实现
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 方法, 方便界面间数据统一管理。
• 依据不同的segue标识符来完成数据处理。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
CustomViewController *customVC = (CustomViewController*)segue.destinationViewController;
// @“push”这个就是Segue ID 自己的identifier区分好
if ([segue.identifier isEqualToString:@"push"]) {
customVC.tempString = self.textField.text;
}else{ NSLog(@"其他情况处理、、、");
} }