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