美文网首页
iOS开发-代理传值

iOS开发-代理传值

作者: 小熊iOS开发 | 来源:发表于2016-08-11 21:50 被阅读0次

    代理传值的步骤:

    需要传值的界面操作步骤

    1.声明代理协议

    2.声明代理方法

    3.声明一个属性,用来表示当前类对象的代理

    4.让代理执行对象的方法,实现界面间从下级界面到上级界面的通讯

    接收传值的界面操作步骤:

    1.遵循代理协议

    2.指定当前的控制器为传值界面控制器的代理

    3.实现代理方法

    需要传值的界面-SecondViewController

    #import <UIKit/UIKit.h>

    // 1.声明协议进行传值

    @protocol SecondVCDelegate

    // 2.通过该协议方法更改上个界面中label.text

    - (void)changeLabelText:(NSString*)aString;

    @end

    @interface SecondViewController :UIViewController

    // 3.声明一个属性,用来表示当前类对象的代理

    @property(nonatomic,assign) id<SecondVCDelegate> delegate;

    @end

    - (void)popToFirstVC:(UIButton*)sender

    {

    [self.navigationController popViewControllerAnimated:YES];

    // 4.让代理执行对象的方法,实现界面间从下级界面到上级界面的通讯

    if([_delegaterespondsToSelector:@selector(changeLabelText:)]) {

    [_delegate changeLabelText:self.textField.text];

    }

    }

    接收传值的界面-FirstViewController

    #import "FirstViewController.h"

    #import" SecondViewController.h"

     //1.遵循代理协议

    @interface FirstViewController() <SecondVCDelegate>

    - (void)pushToNextVC:(UIButton*)sender

    {

    SecondViewController*secondVC = [[SecondViewController alloc]init];

    secondVC.labelText=self.label.text;

    // 2.指定当前的控制器为secondVC的代理

    secondVC.delegate=self;

    [self.navigationController pushViewController:secondVCanimated:YES];

    }

    // 3.实现代理方法

    #pragma mark - SecondVCDelegate

    - (void)changeLabelText:(NSString*)aString

    {

    self.label.text= aString;

    }

    相关文章

      网友评论

          本文标题:iOS开发-代理传值

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