代码改变世界

利用block进行界面传值

2015-10-21 20:02  捏捏的blog  阅读(143)  评论(0)    收藏  举报

小插曲:今天是我的博客开通日,为了庆祝,我写了一篇随笔试试水,有点小激动(作为一个ios新手)

剧情引入:

    从界面A点击一个button进入界面C,在界面C输入一个字符,点击一个button返回到界面A并显示这个字符
 
在viewControllerA.m文件中

-(void)butClicked

{

    viewControllerC *cc=[[viewControllerC alloc]init];

#pragma -mark

    //初始定义一个viewControllerC的对象时,这个名为viewControllerCToA的block变量为空。一旦block变量-viewControolerCToA被赋值了,就会执行以下语句,就是从viewControllerC传给值到这个界面

    cc.viewControllerCToA=^(NSString * CAtext){

        [self resetLabel:CAtext];

    };

    //自定义了navigationController就是这样的跳转的,该方法用于将制定的UIviewController压入uinavigationController管理的栈中。

   // [self.navigationController pushViewController:cc animated:YES];

    [self presentViewController:cc animated:YES completion:^{}];

}

在viewControllerC.m文件中

//button点击返回A的点击事件

-(void)buttonClick

{

    if (self.textfield.text.length==0) {

        UIAlertView * alert=[[UIAlertView alloc]initWithTitle:@"请收入你要传到C的值" message:nil delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

        [alert show];

        return;

    }

    else

    {////////调用系统自带的set方法之后,viewControllerCToA就不为空了

        NSLog(@"在界面A赋值的神奇字符串:%@",self.shenqiStr);

        if(self.viewControllerCToA)

        {

            self.viewControllerCToA(self.textfield.text);

//程序下一步就回自动跳转到viewControllerA.m,然后运行以下语句

//cc.viewControllerCToA=^(NSString * CAtext){

//   [self resetLabel:CAtext];

//};

        }

        [self dismissViewControllerAnimated:YES completion:^{}];

    }

 

}