代理页面间的传值

4 篇文章 0 订阅

RootViewControllers页面push到DetailViewControllers页面,如果DetailViewControllers页面的信息想回传(回调)到RootViewControllers页面,用代理传值,其中DetailViewControllers定义协议和声明代理,RootViewControllers确认并实现代理,RootViewControllers作为DetailViewControllers的代理

首先在DetailViewControllers.h文件中我们创建协议方法

#import <UIKit/UIKit.h>

@class DetailViewController;

@protocol PassingValueDelegate <NSObject>

@optional

-(void)viewController:(DetailViewController *)viewcontroller didPassingValueWithInfo:(NSString *)info;
@end

@interface DetailViewController : UIViewController

@property (nonatomic,assign) id <PassingValueDelegate> delegate;//通过代理对象传值

@end

在DetailViewControllers的.m中我们判定代理对象存在时,为其绑定相应方法

-(void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    //下面的代码写在你需要点击回传的点击事件里面
    if (self.delegate && [self.delegate respondsToSelector:@selector(viewController:didPassingValueWithInfo:)]) {
        [self.delegate viewController:self didPassingValueWithInfo:@"10"];
    }
}

RootViewControllers的.m文件中我们指定代理并让其执行代理的方法,并用一个label显示传过来的值

#import "RootViewController.h"
#import "DetailViewController.h"
@interface RootViewController () <PassingValueDelegate>

@end

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
    button.backgroundColor=[UIColor blueColor];
    button.frame=CGRectMake(100, 100, 40, 20);
    [button addTarget:self action:@selector(Push:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

-(void)Push:(UIButton *)sender{

    DetailViewController *detailVC=[[DetailViewController alloc] init];
    detailVC.delegate=self;
    [self.navigationController pushViewController:detailVC animated:YES];
}

-(void)viewController:(DetailViewController *)viewcontroller didPassingValueWithInfo:(id)info{
    UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(100, 300, 40, 60)];
    label.backgroundColor=[UIColor grayColor];
    label.text=info;
    [self.view addSubview:label];
//    self.view.backgroundColor=info;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值