ios使用storyboard中的segue从后往前进行传值

来源:互联网 发布:caffe识别验证码 编辑:程序博客网 时间:2024/06/05 01:37

之前我们从下一个视图控制器到上一个视图控制器采用的传值方式可能会用到block 代理或者是通知的方式来进行传值。这样可能会需要需要写很多代码。然后效率还并不高。这里有一种方法是建立在storyboard的基础上进行传值的。具体操作如下:

先看下效果:


如图我们可以看到值已经传过去了,那么到底值是怎么传过去的呢。下面看介绍:

首先创建一个button 一个label 给label 加一个手势用于跳转到下一个界面.在第二个界面设置一个textfield  目的是把获得的textfield的text的值传到上一个界面。 

那么我们需要做些什么才能让我们可以进行传值呢.


上图是笔者创建的storyboard  具体结构就是这样.

从viewController 跳转到 passvaluesviewcontroller 通过button 来show(&push)到下一个界面 通过 viewcontroller 来show到下一个界面这里给了一个segueIdentifier 目的是为了给label加手势 通过perform 来show下一个视图控制器。

代码如下:

//这个identifier是 从controller show 得来的。

- (IBAction)labelPressAction:(id)sender {

    [selfperformSegueWithIdentifier:@"segueForPassValuesController"sender:self];

}

那么我们现在要做的就是要在第一个界面写下下面的函数.

//这个函数有什么用 下面会有介绍.

-(IBAction)unWindToViewController:(UIStoryboardSegue *)segue{

   

}

然后我们在第二个视图控制器的由入口向出口连线:


 这样还不够 我们还需要一个segueIdentifier  这个 标识 怎么填写呢 看下图:


ok  这样我话我们对storyboard 的操作已经完成了那么下面我们需要做的就是怎么写代码的问题.

下面我们来继续进行 对-(IBAction)unWindToViewController:(UIStoryboardSegue *)segue 这个方法里内容的说明和书写.

//这个方法是从第二个视图控制器中回来的时候才走的方法 通过判断idenftifier 来判断哪个是资源控制器.然后我们可以获取资源控制器的某些属性值来进行对本页面的操作。

-(IBAction)unWindToViewController:(UIStoryboardSegue *)segue{

    if ([[segueidentifier]isEqualToString:@"unWindToViewController"]) {

        PassValuesViewController *passVC = [seguesourceViewController];

        _testLabel.text = passVC.testTestField.text;

        [_testButtonsetTitle:passVC.testTestField.textforState:UIControlStateNormal];


    }

}

那么我们在第二个视图控制器怎么写代码好呢?

在第二个视图控制器中我们只需要写下下面的代码就好:

//在视图将要消失的时候我们可以通过perform 来跳出这个controller  到前面的controller 

- (void)viewWillDisappear:(BOOL)animated {

    [superviewWillDisappear:animated];

    [selfperformSegueWithIdentifier:@"unWindToViewController"sender:nil];

}

 这样,我们就完成了从后往前通过segue进行传值。怎么样是不是很简单,快来试试吧。


   




0 0
原创粉丝点击