IOS代理模式delegate的相关代码

<pre name="code" class="objc">//
//  MeViewController.h
//  Demo8_Delegate委托
//

#import <UIKit/UIKit.h>
//这里只是说明MeViewController是一个类型,在后面可以创建属性
@class MeViewController;

//1.制定规则   协议名称通常是类名加Delegate
@protocol MeDelegate <NSObject>
-(void)driving:(MeViewController*)meVc address:(NSString*)address;
@end

@interface MeViewController : UIViewController
//2.委托方法需要有delegate属性
@property(nonatomic,weak)id<MeDelegate> delegate;
@property(nonatomic,strong)NSString *name;
@end








 

//
//  MeViewController.m
//  Demo8_Delegate委托
//
//  Created by tarena on 16/4/12.
//  Copyright © 2016年 tarena. All rights reserved.
//

#import "MeViewController.h"

@interface MeViewController ()

@end

@implementation MeViewController
/*声明熟悉
@property(nonatomic,strong)NSString *name;
 做了三件事
 1. NSString *_name;
 2. -(void)setName:(NSString*)name {
      _name = name;
    }
 3. -(NSString *)name{
      return _name;
    }
*/
//重新定义getter方法
-(NSString *)name{
    return @"张三";
}

- (IBAction)back:(id)sender {
    //在此时此刻需要代理人 帮我做事
    //3.在适当的时候,找代理人帮我做事
    [self.delegate driving:self address:@"上海"];
    
    
    //回到前一个界面
    [self dismissViewControllerAnimated:YES completion:nil];
}


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end


<pre name="code" class="objc">#import <UIKit/UIKit.h>

@interface DriverViewController : UIViewController

@end


 


<pre name="code" class="objc">//
//  DriverViewController.m
//  Demo8_Delegate委托
//
//  Created by tarena on 16/4/12.
//  Copyright © 2016年 tarena. All rights reserved.
//

#import "DriverViewController.h"
#import "MeViewController.h"
//1.遵守协议
@interface DriverViewController () <MeDelegate>

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

@end

@implementation DriverViewController

//2.实现协议中的方法
-(void)driving:(MeViewController *)meVc address:(NSString *)address {
    self.label.text = [NSString stringWithFormat:@"开车送%@回%@",meVc.name,address];
    NSLog(@"开车送%@回%@",meVc.name,address);
    
    
}

- (IBAction)goNextVC:(id)sender {
    MeViewController *mc = [[MeViewController alloc]init];
    //3.设置委托方代理人为(自己)
    mc.delegate = self;
    //界面间的跳转 跳转到 MeViewController 界面
    [self presentViewController:mc animated:YES completion:nil];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值