裝備圈 面向接口( 協(xié)議)設(shè)計(jì)

一些協(xié)議

//
//  XZEquipmentCellModel.h
//  XingZhang
//
//  Created by 孟輝 on 2018/11/8.
//  Copyright ? 2018 xz. All rights reserved.
//

#import <Foundation/Foundation.h>
//@class XZEquipmentUser;
//@class XZEquipmentRelate;
@class XZLinkInfo;
@class topicItem;
typedef enum : NSUInteger {
    XZEquipmentCellTypeBanner   = 0, /** 廣告條 */
    XZEquipmentCellTypeIssues   = 1, /** 話題 */
    XZEquipmentCellTypeHaedline = 2, /** 官方資訊 */
    XZEquipmentCellTypeFeatured = 3, /** 精選 */
    
    XZEquipmentCellTypeMoreImages = 4, /** 九宮格圖片 */
    
    XZEquipmentCellTypeVideo = 5,    /** 視頻 */
    
    XZEquipmentCellTypeUnknow = 6,    /** 數(shù)據(jù)異常 如狀態(tài)是視頻但是沒(méi)有視頻附件的 如狀態(tài)是圖片但是沒(méi)有圖片附件的*/
    
} XZEquipmentCellType;
NS_ASSUME_NONNULL_BEGIN

/*
 裝備圈基礎(chǔ)協(xié)議
 */
@protocol XZEquipmentCellBaseDataSource <NSObject>

@property (nonatomic,assign)XZEquipmentCellType cellType;


@end


/*
 裝備圈 廣告條協(xié)議
 */
@protocol XZEquipmentBannerCellDataSource <XZEquipmentCellBaseDataSource>




@end
/*
 裝備圈 廣告條協(xié)議
 */
@protocol XZEquipmentHaedlineCellDataSource <XZEquipmentCellBaseDataSource>




@end

/*
 裝備圈  精選 協(xié)議
 */
@protocol XZEquipmentIssuesCellDataSource <XZEquipmentCellBaseDataSource>



@end
/*
 裝備圈話題協(xié)議
 */
@protocol XZEquipmentFeaturedCellDataSource <XZEquipmentCellBaseDataSource>



@end

/*
 裝備圈裝備發(fā)布者協(xié)議
 */
@protocol XZEquipmentUserCellDataSource <NSObject>


@property (nonatomic,strong) NSString *headPortrait;
//用戶
@property (nonatomic,strong) NSString *name;

@property (nonatomic,strong) NSString *levelName;

@end

/*
 裝備圈裝備  相關(guān)的 協(xié)議: 點(diǎn)贊數(shù)  分享數(shù)  下載數(shù)
 */
@protocol XZEquipmentRelateCellDataSource <NSObject>


//下載量
@property (nonatomic,assign) NSInteger  downloadCount;

//分享量

@property (nonatomic,assign) NSInteger  shareCount;

//關(guān)注狀態(tài) 1已關(guān)注 0未關(guān)注
@property (nonatomic,assign)BOOL careStatus;


@end
/*
 裝備圈裝備協(xié)議   繼承多個(gè)接口  裝備的一個(gè)功能就是一個(gè)協(xié)議
 */
@protocol XZEquipmentCellDataSource <XZEquipmentUserCellDataSource,XZEquipmentRelateCellDataSource,XZEquipmentCellBaseDataSource>

//
@property (nonatomic,strong) NSString *articleId;

//推薦描述
@property (nonatomic,strong) NSString *recommendDesc;

//推薦描述
@property (nonatomic,strong) NSString *articleDesc;


//商品附件
@property (nonatomic,strong) XZLinkInfo *linkInfo;



//1圖片 2視頻
@property (nonatomic,assign) NSInteger mediaType;


//多媒體附件
@property (nonatomic,strong) NSArray<topicItem *> * topicList;


@end


/*
 裝備視頻的協(xié)議
 */
@protocol XZEquipmentVideoCellDataSource <XZEquipmentCellDataSource>

//視頻鏈接
@property (nonatomic,strong) NSString *videoUrl;

//視頻主題
@property (nonatomic,strong) NSString *videoImageUrl;



@end

/*
 裝備圖片的協(xié)議
 */
@protocol XZEquipmentMoreIamgesCellDataSource <XZEquipmentCellDataSource>

//圖片鏈接
@property (nonatomic,strong) NSString *videoUrl;

@property (nonatomic,strong) NSArray<NSString *> *imageUrls;

@end



@interface XZEquipmentCellModel : NSObject




@end
/*
@interface XZEquipmentUser : NSObject



@end

@interface XZEquipmentRelate : NSObject



@end
*/
NS_ASSUME_NONNULL_END

獨(dú)立業(yè)務(wù)

滾動(dòng)廣告

@interface XZEquipmentBannerCell : UITableViewCell

- (void)configCell:(id<XZEquipmentBannerCellDataSource>)model;

@end

話題

@interface XZEquipmetIssuesCell : UITableViewCell


- (void)configCell:(id<XZEquipmentIssuesCellDataSource>)model;

@end

裝備精選

@interface XZEquipmetFeaturedCell : UITableViewCell

- (void)configCell:(id<XZEquipmentFeaturedCellDataSource>)model;

@end

裝備頭條新聞

@interface XZEquipmetHaedlineCell : UITableViewCell

- (void)configCell:(id<XZEquipmentHaedlineCellDataSource>)model;

@end

九宮格圖片


@interface XZEquipmetMoreImagesCell : UITableViewCell

- (void)configCell:(id<XZEquipmentCellDataSource>)model;

@end

視頻

@interface XZEquipmetVideoCell : UITableViewCell

- (void)configCell:(id<XZEquipmentCellDataSource>)model;

@end

controller的組裝 組件

-  (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
   
    //數(shù)據(jù)源
    return self.dataArray.count;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    XZEquipment *equipment  = self.dataArray[indexPath.row];
    //如果裝備樣式未知  不用f計(jì)算高度
    if (equipment.cellType == XZEquipmentCellTypeUnknow) {
        return CGFLOAT_MIN;
    }
    //正確則 自動(dòng)動(dòng)態(tài)布局高度
    return UITableViewAutomaticDimension;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
   
    //沒(méi)有接口按順序各個(gè)組件都呈現(xiàn)一個(gè)
    XZEquipmentCellType cellType = indexPath.row;
    
    switch (cellType) {
        case XZEquipmentCellTypeBanner: /** 廣告條 */
            {
                XZEquipmentBannerCell *cell = (XZEquipmentBannerCell *)[XZEquipmentBannerCell cellGetTableView:tableView];
                //賦值
                [cell configCell:self.dataArray[indexPath.row]];
                return cell;
            }
        case XZEquipmentCellTypeIssues: /** 話題 */
        {
            XZEquipmetIssuesCell *cell = (XZEquipmetIssuesCell *)[XZEquipmetIssuesCell cellGetTableView:tableView];
            [cell configCell:self.dataArray[indexPath.row]];
            return cell;
        }
        case XZEquipmentCellTypeHaedline: /** 官方資訊 */
        {
            XZEquipmetHaedlineCell *cell = (XZEquipmetHaedlineCell *)[XZEquipmetHaedlineCell cellGetTableView:tableView];
            return cell;
        }
        case XZEquipmentCellTypeFeatured: /** 精選 */
        {
            XZEquipmetFeaturedCell *cell = (XZEquipmetFeaturedCell *)[XZEquipmetFeaturedCell cellGetTableView:tableView];
            return cell;
        }
        case XZEquipmentCellTypeMoreImages: /** 九宮格圖片 */
        {
            XZEquipmetMoreImagesCell *cell = (XZEquipmetMoreImagesCell *)[XZEquipmetMoreImagesCell cellGetTableView:tableView];
            return cell;
        }
        case XZEquipmentCellTypeVideo:   /** 視頻 */
            
        {
            XZEquipmetVideoCell *cell = (XZEquipmetVideoCell *)[XZEquipmetVideoCell cellGetTableView:tableView];
            return cell;
        }
            
        default:{
            // 未知 則返回一個(gè)空的高度為0 的cell
            UITableViewCell *cell = [UITableViewCell cellGetTableView:self.tableView];
            return cell;
        }
            
            
    
    }
    
    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拾徙,隨后出現(xiàn)的幾起案子洲炊,更是在濱河造成了極大的恐慌,老刑警劉巖尼啡,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暂衡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡崖瞭,警方通過(guò)查閱死者的電腦和手機(jī)狂巢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)书聚,“玉大人唧领,你說(shuō)我怎么就攤上這事藻雌。” “怎么了斩个?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵胯杭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我受啥,道長(zhǎng)做个,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任滚局,我火速辦了婚禮居暖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘核畴。我一直安慰自己膝但,他們只是感情好冲九,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布谤草。 她就那樣靜靜地躺著,像睡著了一般莺奸。 火紅的嫁衣襯著肌膚如雪丑孩。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天灭贷,我揣著相機(jī)與錄音温学,去河邊找鬼。 笑死甚疟,一個(gè)胖子當(dāng)著我的面吹牛仗岖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播览妖,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼轧拄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了讽膏?” 一聲冷哼從身側(cè)響起檩电,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎府树,沒(méi)想到半個(gè)月后俐末,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奄侠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年卓箫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垄潮。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烹卒,死狀恐怖恢准,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情甫题,我是刑警寧澤馁筐,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站坠非,受9級(jí)特大地震影響敏沉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜炎码,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一盟迟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧潦闲,春花似錦攒菠、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至和敬,卻和暖如春凹炸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昼弟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工啤它, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舱痘。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓变骡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親芭逝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子塌碌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容