最近做項(xiàng)目的時(shí)候,遇到在無(wú)交互的ViewController間傳值的問(wèn)題,即:在設(shè)置頁(yè)修改上傳頭像后,更新大首頁(yè)的頭像。當(dāng)然,就此類問(wèn)題,有很多方案,比如,通知、單例+代理、單例+block等,也有人會(huì)想到KVO,相比較而言,我選用的第三種,單例+block的形式。
問(wèn)題:在C界面中上傳頭像,上傳成功后,A中的頭像也改變。
實(shí)現(xiàn)步驟:
基于盡量少的使用單例類的原則,我們借用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); // 頭像上傳后,回傳到首頁(yè)圖片更新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"]];
};
本文已在版權(quán)印備案,如需轉(zhuǎn)載請(qǐng)?jiān)诎鏅?quán)印獲取授權(quán)。
獲取版權(quán)