美文网首页
block在两个页面的传值

block在两个页面的传值

作者: 七月上 | 来源:发表于2016-03-02 09:06 被阅读93次

    一直知道block有反向传值的功能,自己做了个测试。

    第一个页面有一个label,第二个页面有个UITextField。

    当在UITextField输入值后,点击导航栏上的back按钮,可以将UITextField上面的值反回到第一个页面的label上。

    #import"ViewController.h"
    
    #import"SecondViewController.h"
    
    @interfaceViewController()
    
    {
    
    UILabel*label;
    
    }
    
    @end
    
    @implementationViewController
    
    - (void)viewDidLoad {
    
    [superviewDidLoad];
    
    label= [[UILabelalloc]initWithFrame:CGRectMake(100,100,100,50)];
    
    label.backgroundColor= [UIColorwhiteColor];
    
    [self.viewaddSubview:label];
    
    self.navigationItem.rightBarButtonItem= [[UIBarButtonItemalloc]initWithTitle:@"next"style:UIBarButtonItemStyleDonetarget:selfaction:@selector(next:)];
    
    }
    
    -(void)next:(UIBarButtonItem*)sender{
    
    SecondViewController*sVC= [[SecondViewControlleralloc]init];
    
    [self.navigationControllerpushViewController:sVCanimated:YES];
    
    sVC.block=^(NSString*string)
    
    {
    
    label.text= string;
    
    returnstring;
    
    };
    

    第二个页面的.h

    #import
    
    //声明一个有返回值的名字叫sendValue的block
    
    typedefNSString*(^sendValue)(NSString*) ;
    
    @interfaceSecondViewController :UIViewController
    
    //把block定义为属性
    
    @property(nonatomic,strong)sendValueblock;
    
    @end
    

    .m

    #import"SecondViewController.h"
    
    @interfaceSecondViewController()
    
    {
    
    UITextField*textField;
    
    }
    
    @end
    
    @implementationSecondViewController
    
    - (void)viewDidLoad {
    
    [superviewDidLoad];
    
    textField= [[UITextFieldalloc]initWithFrame:CGRectMake(100,100,100,50)];
    
    textField.backgroundColor= [UIColorwhiteColor];
    
    [self.viewaddSubview:textField];
    
    self.navigationItem.rightBarButtonItem= [[UIBarButtonItemalloc]initWithTitle:@"back"style:UIBarButtonItemStyleDonetarget:selfaction:@selector(back:)];
    
    }
    
    -(void)back:(UIBarButtonItem*)sender{
    
    
    
    self.block(textField.text);//调用block
    
    [self.navigationControllerpopToRootViewControllerAnimated:YES];
    
    }
    
    @end
    

    相关文章

      网友评论

          本文标题:block在两个页面的传值

          本文链接:https://www.haomeiwen.com/subject/tcrnkttx.html