在IOS開發(fā)中,很多時(shí)候項(xiàng)目需求會(huì)有點(diǎn)擊某一行,展開cell下面的cell,在此點(diǎn)擊會(huì)收起;
目前創(chuàng)新互聯(lián)公司已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、成華網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
這種實(shí)現(xiàn)方式很多,個(gè)人這里隨便推薦一種實(shí)現(xiàn)方式:
1、在數(shù)據(jù)轉(zhuǎn)模型的model里面添加一個(gè)屬性, @property ( assign , nonatomic ) BOOL isOpen; //是否展開
2、在對(duì)應(yīng)的tableView層,- ( nullable UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section;方法下面生成View,并未其添加點(diǎn)擊事件;點(diǎn)擊事件方法如下:
在對(duì)應(yīng)的tableView的dataSource方法中:
以及- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{? if ( self .dataList[indexPath.section].isOpen) {
if ( self .dataList[indexPath.section].isOpen) {
//設(shè)置展開的cell
}else{
//設(shè)置沒(méi)有展開的cell;
}}
實(shí)現(xiàn)的方法和tableBView差不多,實(shí)現(xiàn)他的幾個(gè)代理方法:
解釋一下:傳進(jìn)來(lái)的item:代表他給你的model,根據(jù)這個(gè)model可以去獲取上級(jí)model:?clickpackagesModel*packageModel = [treeViewparentForItem:model];
同樣可以根據(jù)model獲取相應(yīng)的cell:?clickPackageCell*packagecell01 = (clickPackageCell*)[treeViewcellForItem:model];
有了上面兩個(gè)方法,基本就能玩轉(zhuǎn)三級(jí)展開和收起;
對(duì)于三級(jí)展開,大家還有什么好的想法亦或者好的框架沒(méi)?歡迎補(bǔ)充
上一篇我們說(shuō)到組件化開發(fā)是一個(gè)App最大一層的架構(gòu),那具體到了一個(gè)一個(gè)的業(yè)務(wù)組件里,比組件化開發(fā)小一點(diǎn)的架構(gòu)就是三層架構(gòu)。所謂三層架構(gòu)就是指把項(xiàng)目中所有的類劃分到不同的層,目的是使項(xiàng)目邏輯更加清晰,提升開發(fā)和維護(hù)的效率,我們一般會(huì)把項(xiàng)目分為三層:數(shù)據(jù)層、業(yè)務(wù)層、視圖層。
注意:嚴(yán)格來(lái)講,三層架構(gòu)并不真正就比組件化開發(fā)小,它們倆只是從不同的角度去做架構(gòu)而已,往往是相互融合的,比如組件化開發(fā)里網(wǎng)絡(luò)庫(kù)就是三層架構(gòu)里數(shù)據(jù)層的內(nèi)容,UI庫(kù)就是三層架構(gòu)里視圖層里的內(nèi)容等,這里之所以說(shuō)“三層架構(gòu)是比組件化開發(fā)小一點(diǎn)的架構(gòu),主要是針對(duì)業(yè)務(wù)組件來(lái)說(shuō)的”,當(dāng)然甚至我們?cè)诓皇褂媒M件化開發(fā)時(shí)項(xiàng)目里依然可以使用三層架構(gòu)。
比三層架構(gòu)再小一點(diǎn)的架構(gòu)就是視圖層架構(gòu),我們常說(shuō)的MVC、MVVM都是?視圖層的架構(gòu)。
MVC,即Model-View-Controller,它們的關(guān)系如下:
MVVM,即Model-View-ViewModel,它們的關(guān)系如下:
Github Demo 地址
讓內(nèi)層的tableView滑動(dòng)手勢(shì)可以傳出去,這時(shí)候需要一個(gè)繼承UITableView,以下是 GestureTableView.swift 文件
內(nèi)層防止左右滾動(dòng)的時(shí)候可以上下滾動(dòng)
文章名稱:ios開發(fā)層,ios面向開發(fā)者
鏈接地址:http://m.kartarina.com/article8/dsespip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站建設(shè)、定制開發(fā)、網(wǎng)站導(dǎo)航、靜態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)