91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

分析iOS復數cell下優雅的代碼結構

發布時間:2021-11-05 10:15:18 來源:億速云 閱讀:115 作者:iii 欄目:編程語言

本篇內容主要講解“分析iOS復數cell下優雅的代碼結構”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“分析iOS復數cell下優雅的代碼結構”吧!

需求

一個頁面,可能出現多種cell。

這個需求應該是很常見的,需要解決的問題是如何讓多個cell能夠共同響應同一個方法,這樣外部不需要知道具體的cell種類,只要調用同一個方法進行配置即可。

問了問朋友們大家基本上是兩派。

協議基類

我個人以前也是用協議對多個cell進行約束的,通過讓cell遵循同一個協議并實現協議方法,讓外部達到統一配置的效果。

//cell共同遵循這個協議@protocol ModuleACellConfigPropotol <NSObject>- (void)configCellWithModel:(KTModel *)model;@end通過協議調用方法UITableViewCell<ModuleACellConfigPropotol> * cell= [tableView dequeueReusableCellWithIdentifier:cellID];if ([cell respondsToSelector:@selector(configCellWithModel:)]) { [cell configCellWithModel:model];}

對于基類繼承,大家普遍反映很惡心,準備重構,所以就不考慮了。

耦合

標準的MVC情況下, cell的配置方法,應該長這樣:

@interface KTTableViewCell00 : UITableViewCell- (void)configShowViewWithTitle00:(NSString *)title;@end@interface KTTableViewCell01 : UITableViewCell- (void)configShowViewWithTitle01:(NSString *)title;@end

外部賦值也不應該把model傳遞給cell,而是只傳遞cell指定的參數

[cell configShowViewWithTitle01:model.title];

而協議,為了達到統一配置,必須使用同一個方法進行約束。而cell們實際上的充要參數并不相同,所以只能將整個model作為參數進行傳遞。

@protocol ModuleACellConfigPropotol <NSObject>- (void)configCellWithModel:(KTModel *)model;@end

解耦

通過協議約束的方式,已經能夠成功實現統一配置。

但有一個問題隨之而來,這樣cell就與model產生了耦合,導致cell無法復用。

從結果上來看,這樣并不完美。

要解決這個問題,我覺得在cell與協議之間,又添加了一層適配器是個不錯的方案。

而這個適配器,我使用了Category進行實現。

@interface KTTableViewCell00 (ModuleA) <ModuleACellConfigPropotol>@end@implementation KTTableViewCell00 (ModuleA)- (void)configCellWithModel:(KTModel *)model { [self configShowViewWithTitle00:model.title];}@end

最后調用起來 :

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { KTModel *model = self.dataArr[indexPath.row]; NSString * cellID = model.identifier; UITableViewCell<ModuleACellConfigPropotol> * cell= [tableView dequeueReusableCellWithIdentifier:cellID]; if ([cell respondsToSelector:@selector(configCellWithModel:)]) { [cell configCellWithModel:model]; } return cell;}

到此,相信大家對“分析iOS復數cell下優雅的代碼結構”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ios
AI

南开区| 沾益县| 松滋市| 荆州市| 法库县| 黎平县| 恩施市| 舟曲县| 东乡| 丘北县| 长垣县| 满洲里市| 新野县| 镇江市| 九台市| 泰顺县| 鄂州市| 汕头市| 增城市| 三穗县| 车险| 保亭| 富裕县| 大石桥市| 于都县| 沅陵县| 枞阳县| 光山县| 高邮市| SHOW| 册亨县| 盐池县| 渭南市| 绵阳市| 漳平市| 依安县| 香格里拉县| 郧西县| 昌都县| 漳浦县| 榕江县|