使用AppDelegate+block方式无交互页面间传值

最近做项目的时候,遇到在无交互的ViewController间传值的问题,即:在设置页修改上传头像后,更新大首页的头像。当然,就此类问题,有很多方案,比如,通知、单例+代理、单例+block等,也有人会想到KVO,相比较而言,我选用的第三种,单例+block的形式。

问题:在C界面中上传头像,上传成功后,A中的头像也改变。

实现步骤:
基于尽量少的使用单例类的原则,我们借用AppDelegate单例的特性,
1、AppDelegate中声明block

typedef void(^ModifyHeadPicBlock)(NSString *picPath);

@interface AppDelegate : UIResponder 
@property (copy, nonatomic) ModifyHeadPicBlock modifyHeadPicBlock;
@end

2、在C中,上传成功的地方添加如下代码:

AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDel.modifyHeadPicBlock(picPath); // 头像上传后,回传到首页图片更新picPath为头像URL

3、在A中更新头像

AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDel.modifyHeadPicBlock = ^(NSString *picPath){
        [shopImageView sd_setImageWithURL:[NSURL URLWithString:picPath] placeholderImage:[UIImage imageNamed:@"storeName.png"]];
};

本文已在版权印备案,如需转载请在版权印获取授权。
获取版权

你可能感兴趣的:(使用AppDelegate+block方式无交互页面间传值)