iOS 開發(fā)中的自我管理模式
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
使用這個(gè)控件的人只需要調(diào)用這個(gè) configure 方法就可以配置入?yún)⒑褪录幚?。但隨之而來(lái)的就是一些蛋疼的問題:
configure 的調(diào)用者是 superview,上面的例子中也就是一個(gè) UITableViewCell,但 Cell 這層并不知道自己的 ViewController 是誰(shuí),于是乎還得向上一級(jí)傳遞這個(gè)點(diǎn)擊事件,直到能獲取到 NavigationController,然后 Push 一個(gè)用戶信息的頁(yè)面。
這個(gè) Avatar View 在 App 的各個(gè)地方都可能粗線,而且行為一致,那就意味著事件處理的 block,要散落在各個(gè)頁(yè)面中,同時(shí)也帶來(lái)了很多“只是為向上一層級(jí)轉(zhuǎn)發(fā)事件”的 “Middle Man”
為解決這個(gè)問題,就需要給這個(gè) View 放權(quán),讓其自己 Handle 自己的事件,也就是 Self-Managed,為了不破壞 View 的純潔性,比較好的實(shí)踐是在 Category 中實(shí)現(xiàn):
@interface?FDAvatarView?(FDAvatarViewSelfManager)
-?(void)selfManagedConfigureWithAvatarURL:(NSURL?*)URL?VIPInfo:(id)info?uid:(NSString?*)uid;
@end
實(shí)現(xiàn)時(shí)最好要調(diào)用 View 主類提供的 API:
@implementation FDAvatarView (FDAvatarViewSelfManager)
// 為后一個(gè)頁(yè)面的創(chuàng)建增加了個(gè) UID 參數(shù)
- (void)selfManagedConfigureWithAvatarURL:(NSURL *)URL VIPInfo:(id)info UID:(NSString *)UID {
?。踫elf configureWithAvatarURL:URL VIPInfo:info tapped:^{
// 假設(shè) App 結(jié)構(gòu)是 Root -》 TabBar -》 Navigation -》 ViewController
UITabBarController *tabBarControler = (id)[UIApplication.sharedApplication.delegate.window.rootViewController;
UINavigationController *navigationController = tabBarControler.selectedViewController;
// 創(chuàng)建用戶信息 View Controller
FDUserProfileViewController *profileViewController = [FDUserProfileViewController viewControllerWithUID:UID];
?。踤avigationController pushViewController:profileViewController animated:YES];
}];
}
@end
這里用到了類似 AOP 的思路,添加了對(duì) App 層級(jí)的耦合,如果覺得這樣的耦合方式不妥的話,也可以封裝個(gè)全局方法去取到當(dāng)前頂層的 Navigation Controller。
這樣,F(xiàn)DAvatarView 的調(diào)用者只需要配置入?yún)?,其余的它自己全能搞定了,即?App 內(nèi)很多處出現(xiàn)頭像,邏輯代碼也只有一份。
接下來(lái)再來(lái)個(gè)例子:
這個(gè)點(diǎn)贊的按鈕功能上有幾個(gè)職責(zé):
顯示已有的點(diǎn)贊數(shù)
點(diǎn)擊按鈕后執(zhí)行一個(gè)小動(dòng)畫,點(diǎn)贊數(shù) +1,同時(shí)發(fā)送網(wǎng)絡(luò)請(qǐng)求。
若已經(jīng)點(diǎn)贊,點(diǎn)擊執(zhí)行反向操作
若網(wǎng)絡(luò)請(qǐng)求發(fā)送失敗,則回退成點(diǎn)擊前的狀態(tài)
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
iOS 開發(fā)中的自我管理模式下載
相關(guān)電子資料下載
- iOS17.1可能明天發(fā)布,iOS17.1主要修復(fù)哪些問題? 380
- 華為全新鴻蒙蓄勢(shì)待發(fā) 僅支持鴻蒙內(nèi)核和鴻蒙系統(tǒng)應(yīng)用 719
- 蘋果手機(jī)系統(tǒng)iOS 17遭用戶質(zhì)疑 731
- iPhone12輻射超標(biāo)?蘋果推送iOS 17.1解決此事 750
- 傳華為囤積零部件 目標(biāo)明年智能手機(jī)出貨7000萬(wàn)部;消息稱 MiOS 僅限國(guó)內(nèi),小米 28208
- 蘋果推送iOS17.0.3,解決iPhone15Pro系列存在機(jī)身過熱 216
- Testin云測(cè)兼容和真機(jī)服務(wù)平臺(tái)中上線iPhone 15系列手機(jī) 208
- 利爾達(dá)推出搭載HooRiiOS的Matter模組 145
- 運(yùn)放參數(shù)解析:輸入偏置電流(Ibias)和失調(diào)電流(Ios) 128
- 昆侖太科發(fā)布支持國(guó)產(chǎn)飛騰騰銳D2000芯片的開源BIOS固件版本 448