storyBoard和用segue切换视图的方法

来源:互联网 发布:erp系统是什么软件 编辑:程序博客网 时间:2024/06/06 03:26

1.在storyBoard中拖两个视图控制器

2.在前一个视图控制器点击一下,再按住command键到第二个视图控制器中,会出现如下自定义线

3.选中该两个视图中的线,在标识符栏中定义一个标识符:push

4.创建一个继承自UIStoryBoardSegue的类,重写perform这个方法(该方法自动实现)

5.匹配该segue和自定义的类

6.根据segue的标识符实现两个视图的页面的动画切换

主要代码:

自定义segue类:CustomSegue:

.h文件

@interface CustomSegue : UIStoryboardSegue

@end

.m文件

#import "CustomViewController.h"

@implementation CustomSegue


#pragma mark--------------自定义segue会自动触发该方法
-(void)perform
{
    
    //1.获取源视图控制器
    UIViewController *v1 = (UIViewController *)self.sourceViewController;
    
    //2.获取目的视图控制器
    UIViewController *v2 = (UIViewController *)self.destinationViewController;
    
    //3.自定义页面切换效果
    [UIView transitionFromView:v1.view toView:v2.view duration:3 options:UIViewAnimationOptionTransitionFlipFromRight  completion:^(BOOL finished) {
        NSLog(@"实现了页面间的动画切换效果");
    }];
    
    
}

第一个视图控制器的.m文件(当触摸第一个视图控制器的视图时进行切换)

#import "ViewController.h"
#import "CustomViewController.h"

@interface ViewController ()



@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}



//触摸开始
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
#pragma mark-----------可视化编程页面跳转方法(storyBoard)
    
    
    [self performSegueWithIdentifier:@"push" sender:nil];
}



#pragma mark----------------执行perform方法之前执行该方法
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    
    //获取源视图控制器
    ViewController *v1 = (ViewController *)segue.sourceViewController;
    
    //获取目的视图控制器
    CustomViewController *v2 = (CustomViewController *)segue.destinationViewController;
    
#pragma mark------------判断segue的标志
    if ([segue.identifier isEqualToString:@"push"]) {
        NSLog(@"动画切换");
    }
    
}


//注意:

segue有三个常用属性:

sourceViewController:源视图控制器

destinationViewController:目标视图控制器

identifier:标识符


三个方法(执行从前到后)

-(void)performSegueWithidentifier: sender:

-(void)prepareForSegue:sender:   该方法一般实现传值,在perform方法之前执行

-(void)perform;



@end


0 0
原创粉丝点击