IOS代理反向传值

首先在你需要反向传回来值得界面声明 .h文件

//指定委托协议

@protocol  EditDelegate <NSObject>

-(void)editFinish:(EditViewController*)editVC backValue:(NSString*)backValue;

@end

//代理人

@property(nonatomic,weak)id<EditDelegate> delegate;

//用来接收需要传过来修改的值.如果不需要从第一个界面传值过来可以不需要下面这一步

@property(nonatomic,strong)NSString *editTitle;


然后在第一个界面的.M文件里遵守<EditDelegate>协议

@interface NickNameViewController () <EditDelegate>

@property (weak, nonatomic) IBOutlet UILabel *nicknameTitle;



@end


@implementation NickNameViewController


//实现代理方法

-(void)editFinish:(EditViewController *)editVC backValue:(NSString *)backValue {

    //通过参数获取传回来的值,并用传回来的值更新label的显示

    self.nicknameContent.text = backValue;

}


//跳转到下一个界面

- (IBAction)goEditVC:(id)sender {

    EditViewController *editVC = [[EditViewController alloc]initWithNibName:@"EditViewController" bundle:nil];

    

    //label中的内容, 传入到下个界面,使用下个界面的属性来接受这些内容

    editVC.editTitle = self.nicknameTitle.text;

    

    //设置下个界面的代理人 自己

    editVC.delegate = self;

    //跳转界面

    [self presentViewController:editVC animated:YES completion:nil];

}


然后在第二个界面的.M文件中

//回到前一个界面,并把修改的值传回去

- (IBAction)saveEditContent:(id)sender {

    


    //把要传回的值 交给代理人

    [self.delegate editFinish:self backValue:self.editContentField.text];

    

    

    //回到前一个界面

    [self dismissViewControllerAnimated:YES completion:nil];

}


- (void)viewDidLoad {

    [super viewDidLoad];

    //用前一个界面传入的内容,更新显示

    self.editTitleLabel.text = self.editTitle;

    

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值