代理协议消息单方传递机制

单方消息传递通常用于子视图向主视图传递数据,步骤如下;

 

1.在子视图中

1.1 定义协议及协议中规定的方法,协议名通常是子视图控制器名+Delegate:

@protocol GameViewControllerDelegate <NSObject>

- (void)gameOverDeliverTimer:(NSString *)timer;  

@end

1.2 定义代理:

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

1.3 子视图中在需要的地方,通过定义的代理调用协议方法,在父视图中没有设置代理的话该方法是不起作用的:

[_delegate gameOverDeliverTimer:_timerLabel.text]

 

2.在父视图中

2.1 父视图头文件需遵循子视图的协议才有资格申请成为代理:<GameViewControllerDelegate>

2.2 推出子视图控制器前,将自己设置成为子视图的代理,通常是在prepareSegue中实现:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    GameViewController *controller = [segue destinationViewController];  
    controller.delegate = self;
}

2.3 实现协议中的方法:

- (void)gameOverDeliverTimer:(NSString *)timer{
    NSLog(@"最佳成绩:%@秒", timer);
}

 

转载于:https://www.cnblogs.com/litaowei/p/3723440.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值