委托与代理
2015-12-11 本文已影响22人
王老板
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0) {
// 委托
[_delegate buyIphone:@"📱"];
}else if (buttonIndex == 1){
// 通知
NSDictionary *dic = @{@"boom":@"💣"};
[[NSNotificationCenter defaultCenter] postNotificationName:@"changeLabel" object:dic];
}
}
通知
- 第一个页面
- 1.注册通知
[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(justDoIt:) name:@"changeLabel" object:nil];
* 2.拿到暗号,做事情(changeLabel为暗号)
```
-(void)justDoIt:(NSNotification *)obj{
NSDictionary *dic = [obj object];
_notificationOrigionLabel.text = dic[@"boom"];
}```
- 第二个页面
- 1:对暗号
- 在button里写
NSDictionary * dic = @{@"boom":@"💣"};
[[NSNotificationCenter defaultCenter] postNotificationName:@"zhadan" object:dic];
* changeLabel为暗号
委托
@protocol BuyIphone6sDelegate <NSObject>
-(void)buyIphone:(NSString *)str;
@property(nonatomic,strong)id<BuyIphone6sDelegate>delegate;
- 【第二个页面】
- 1在第二个页面写协议,写在interface 上面
@protocol BuyIphone6sDelegate <NSObject>
- 2.在第二个页面 实例化协议的变量
-(void)buyIphone:(NSString *)str;
- 3.让协议变量去做做协议中的方法
@property(nonatomic,strong)id<BuyIphone6sDelegate>delegate;
- 在button里实现
UIAlertAction *enter = [UIAlertAction actionWithTitle:@"委托" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[_delegate buyIphone:@"📱"];
}];
- 方法
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0) {
// 委托
[_delegate buyIphone:@"📱"];
- 【第一个页面】
- 1.跳转页面的时候,签合同。
vc2.delegate = self; self为vc1
- 2.在interface中实现这个协议
@interface DPNViewController ()<BuyIphone6sDelegate>
- 3.在.m中实现协议方法
-(void)buyIphone:(NSString *)str{
_delegateOriginLabel.text = str;
}