iOS页面之间传值-----delegate的运用

需求:

假设有两个页面,View1喝View2,点击view1跳转到view2,view2处理完事件之后回到view1并且view1获取view2传回的值。


实现:

1.定义一个接口类:Mydeledate

@protocol MyDeletage 

-(void)valueChanged:(NSString *) value;

@end

2.view1.h中声明接口

#import <UIKit/UIKit.h>
#import "MyDeletage.h"


@interface ViewController : UIViewController<MyDeletage>


@end

3.view1.m中实现接口方法

-(void) valueChanged:(NSString *)value{
    NSLog(@"传过来的值是---->%@",value);
}
点击跳转到view2的时候需要注意

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    Hero *h = _heros[indexPath.row];
//    DetailViewViewController *dv = [[DetailViewViewController alloc] init];

    DetailViewViewController *dv = [self.storyboard instantiateViewControllerWithIdentifier:@"detailSB"];
    dv.hero = h;
//<span style="color:#ff6666;">需要注意的是这里,将view2的接口代理绑定到当前页面</span>
    dv.delegate = self;
    [self.navigationController pushViewController:dv animated:YES];
//    [self presentViewController:dv animated:YES completion:nil];
}


4.view2.h中 定义接口delegate

#import <UIKit/UIKit.h>
#import "Hero.h"
#include "MyDeletage.h"

@interface DetailViewViewController : UIViewController
@property (strong, nonatomic) IBOutlet UILabel *name;
@property (strong, nonatomic) IBOutlet UILabel *intro;
@property (strong, nonatomic) IBOutlet UIImageView *icon;
@property Hero *hero;
@property id<MyDeletage>delegate;
@end

5.view2.m中实现方法(这里做了一个简单的点击事件,传回一个字符串)

- (IBAction)clickBack:(UIBarButtonItem *)sender {
    
    [self.delegate valueChanged:@"value changed!!"];
    [self.navigationController popViewControllerAnimated:YES];
}


至此,代码完毕,当点击view2中的按钮时,view1回收到view2传回的值,运行结果为

传过来的值是---->value changed!!

以上。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值