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

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

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

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

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

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@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"]];
};

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,340评论 25 708
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,535评论 1 23
  • 叨叨侠爱叨叨阅读 234评论 0 0
  • 想研究美图的初衷在于其做为厦门目前最知名的互联网公司之神秘(身为厦门人的我更为好奇)。 而且这2年其动作之频繁: ...
    ElekChen阅读 512评论 4 2
  • 钢琴是一种性能全面而完善、应用十分广泛的大型键盘乐器。在当今世界上,无论公众的或家庭的音乐生活中,钢琴占有重要的地...
    af88c59abbf6阅读 1,892评论 1 2

友情链接更多精彩内容