美文网首页
界面传值1:代理传值

界面传值1:代理传值

作者: 统领三界 | 来源:发表于2016-02-03 22:24 被阅读175次

界面传值最简单的方法是使用属性,但是在很多时候属性无法实现此功能,比如在导航视图控制器里面从后往前传值的时候,这个时候我们就需要使用,其他方法,例如代理,block,或者是通知.这里我们详细介绍代理的使用方法.

首先我们打开xcode,添加两个viewcontroller,使用导航视图控制器来管理,第一页添加一个UILabel,用来显示内容,第二页添加一个UITextfield,用来输入内容,效果如下

屏幕快照 2016-02-03 下午9.26.12.png 178653F4-6099-43DF-8B1F-6A82E721033E.png

现在我们要实现的效果是在第二页的的textfield内容输入内容,然后在第一页的label里面显示.
首先我们要为第二页的viewcontroller声明一个协议,添加一个代理属性

代码如下

//代理遵守的协议方法
@protocol secondVCDelegate <NSObject>
-(void)passValue:(NSString *)string;
@end

@interface SecondViewController : UIViewController
@property (nonatomic,weak)id<secondVCDelegate>deleagte;//设置代理属性
@end

然后我们在推出第二个页面的时候要为第二个页面指定一个代理对象为self代码如下

-(void)next:(UIBarButtonItem *)sender{
    
    SecondViewController *secondVC = [SecondViewController new];
    secondVC.deleagte = self;
    [self.navigationController pushViewController:secondVC animated:YES];
}

不要忘记要先声明代理方法

@interface ViewController ()<secondVCDelegate>

@end

然后去第一个页面实现代理方法,也就是把把代理传过来的之显示在label上面

-(void)passValue:(NSString *)string{
    self.label.text = string;
}

在所有的贮备工作做好之后,我们就需要获取这个值,这里需要注意一点,就是在什么时候获取这个值.我们需要在第二个页面消失的时候的时候去获取这个值,并且用代理方法传过去.

-(void)back:(UIBarButtonItem *)sender{
    NSString *string = _textfield.text;
    [self.deleagte passValue:string];
    [self.navigationController popToRootViewControllerAnimated:YES];

}

这样我们就实现用代理传值.

相关文章

  • iOS中界面传值的几种方式

    1.属性传值 属性传值适用于顺序传值,从前面的界面传值给后面的界面。 2.代理传值 用代理的方式实现界面间传值稍微...

  • Swift界面传值

    Swift中界面传值的方法 主要有三种 1.代理传值2.闭包传值(即OC中的Block) 属性传值 代理传值 F...

  • 界面传值1:代理传值

    界面传值最简单的方法是使用属性,但是在很多时候属性无法实现此功能,比如在导航视图控制器里面从后往前传值的时候,这个...

  • iOS界面传值的几种常用方式总结

    1.属性传值 第二个界面 同时 .m使用 在第一个界面 写传值 2.代理传值 RootViewController...

  • Swift常用的界面传值(属性传值、协议传值、闭包传值)

    1、属性传值 属性传值多用于正向传值(A->B) 2、代理传值 代理传值多用于反向传值(B->A) 3、闭包传值 ...

  • swift 代理传值

    swift中的代理传值跟oc中的用法基本一样,都是用于反向传值,这里假设a界面向b界面传值为正向传值,则: 在b界...

  • swift中的协议代理传值

    协议代理传值一般使用在下级界面往上级界面传值的情况,这里将上级界面设定为A界面,下级界面设定为B界面。传值的具体操...

  • iOS-传值方式

    传值方式:1、属性传值 方法传值2、代理传值3、单例传值 4、通知传值 NSNotificationCente...

  • 界面传值

    1正向传值 2反向传值(代理) 在b界面 :1声明协议和方法(方法不实现)2定义代理属性 通知代理 a面遵守协议。...

  • block开发使用场景

    block传值 利用block去代理代理传值 1. 代理传值 点击当前控制器Viewcontroller利用mod...

网友评论

      本文标题:界面传值1:代理传值

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