关于方向传值那点儿四儿(一)delegate


delegate:代理,为其他对象提供一种代理(协议)以控制对这个对象的访问。

我们来利用代理实现界面间反向传值,减少循环引用,降低耦合。

下面我们上代码来看:

首先:找到我们要提供代理的对象(在界面反向传值中,我们提供代理的对象跳转后的界面,即:反向传值界面)

然后:在.h文件声明协议

@protocol ReverseTheValueDelegate <NSObject>

- (void)reverseUsername:(NSString *)username;

@end


// 声明遵守协议的id类型属性
@property (nonatomic, assign) id<ReverseTheValueDelegate> delegate;

并在界面放回的方法中实现代理传值调用(如下代码 我们传回的是字符串‘666’)

- (void)goBackAction
{
    [self dismissViewControllerAnimated:YES completion:nil];
    if (self.delegate && [self.delegate respondsToSelector:@selector(reverseUsername:)]) {
        [self.delegate reverseUsername:@"666"];
    }
}


最后:我们找到遵守协议(delegate)的对象

有两种遵守协议的方式

// 方式一(在Class Extension遵守协议)
@interface ViewController () <ReverseTheValueDelegate>

@end

// 方式二(在Class Declaration遵守协议)
@interface ViewController : UIViewController <ReverseTheValueDelegate>@end

 之后实现协议中的反向传值的方法获取需要得到的值(如下code 是获取下一界面的username字符串的值) 

#pragma mark - ReverseTheValueDelegate
- (void)reverseUsername:(NSString *)username
{
    NSLog(@"%@", username);
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值