使用AppDelegate+block方式無(wú)交互頁(yè)面間傳值

最近做項(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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容