1. 程式人生 > >tableViewCell列表點選展開顯示二級列表

tableViewCell列表點選展開顯示二級列表

之前在網上看到過這種的,都是封裝的或者是用的第三方,這是自己寫的,有興趣大家也可以把他封裝起來留著自己用;

#import "ViewController.h"

#define WIDTH [UIScreen mainScreen].bounds.size.width

#define HEIGHT [UIScreen mainScreen].bounds.size.height

@interfaceViewController ()<UITableViewDataSource,UITableViewDelegate>

@property (nonatomic, strong)

NSMutableArray *dataArray;

@property (nonatomic, strong) NSMutableArray *stateArray;

@property (nonatomic, strong) NSMutableArray *sectionArray;

@property (nonatomic, strong) UITableView *tableView;

@end

@implementation ViewController

- (void)viewDidLoad {

    [superviewDidLoad];

self.title = @"TableView

的點選展開顯示";

    [selfinitDataSource];

    [selfinitTable];

}

/**

 *  初始化選擇行業

 */

- (void)initDataSource

{

_sectionArray  = [NSMutableArrayarrayWithObjects:@"計算機/網際網路/通訊",

@"生產/工藝/製造",

@"商業/服務業/個體經營",

@"金融/銀行/投資/保險",

@"文化/廣告/傳媒",

@"娛樂/藝術/表演",

@"醫療/護理/製藥",

@"律師/法務",

@"教育/培訓",

@"學生",nil];

NSArray *one = @[@"工程獅",@"程式猿"

,@"UI設計師",@"運營人員",@"產品經理",@"策劃師",@"市場拓展",@"網站編輯",@"其他"];

NSArray *two = @[@"管理層",@"技術員",@"檢驗員",@"質檢員",@"就是個工人",@"小組長",@"車間主任",@"其他"];

NSArray *three = @[@"服務員",@"收銀員",@"會計",@"文祕",@"保安大哥",@"銷售經理",@"造型師",@"廚師",@"採購員",@"業務經理",@"個體戶",@"其他"];

NSArray *four = @[@"證券分析師",@"操盤手",@"客戶經理",@"保險經紀",@"銀行職員",@"投資經理",@"理財顧問",@"保險精算師",@"其他"];

NSArray *five = @[@"作家",@"設計師",@"廣告策劃",@"主持人",@"編導",@"記者",@"製片人",@"導演",@"草根寫手",@"其他"];

NSArray *six = @[@"歌手",@"模特",@"導演",@"經紀人",@"編劇",@"攝影師",@"音樂人",@"製作人",@"藝術家",@"其實我是一個演員",@"其他"];

NSArray *seven = @[@"主治醫師",@"營養師",@"護士",@"護工",@"美容師",@"醫藥代表",@"醫務工作者",@"藥劑師",@"其他"];

NSArray *eight = @[@"公務員",@"律師",@"警察",@"法官",@"政府工作人員",@"軍人",@"其他"];

NSArray *nine = @[@"幼教",@"教師",@"教授",@"戶外拓展",@"講師",@"教練",@"其他"];

NSArray *ten = @[@"中學生",@"大學生",@"研究生",@"博士生",@"留學生"];

_dataArray = [NSMutableArrayarrayWithObjects:one,two,three,four,five,six,seven,eight,nine,ten, nil];

_stateArray = [NSMutableArrayarray];

for (int i = 0; i < _dataArray.count; i++)

    {

//所有的分割槽都是閉合

        [_stateArrayaddObject:@"0"];

    }

}

/**

 *  初始化TableView

 */

- (void)initTable{

_tableView = [[UITableViewalloc]initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT) style:UITableViewStylePlain];

_tableView.delegate = self;

_tableView.dataSource = self;

_tableView.tableFooterView = [UIViewnew];

    [self.viewaddSubview:_tableView];

}

#pragma mark - UITableViewDataSource UITableViewDelegate

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return_sectionArray.count;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

if ([_stateArray[section] isEqualToString:@"1"]){

//如果是展開狀態

NSArray *array = [_dataArrayobjectAtIndex:section];

return array.count;

    }else{

//如果是閉合,返回0

return0;

    }

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

staticNSString *cellID = @"cellID";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

if (cell == nil) {

        cell = [[UITableViewCellalloc]initWithStyle:(UITableViewCellStyleSubtitle) reuseIdentifier:cellID];

    }

    cell.textLabel.text = _dataArray[indexPath.section][indexPath.row];

    cell.backgroundColor = [UIColorwhiteColor];

    cell.selectionStyle = UITableViewCellAccessoryNone;

//    cell.tag =  _dataArray[indexPath.section][indexPath.row];

    cell.tag = indexPath.row;

return cell;

}

/**

 *  設定sectiontitle

 */

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

{

return_sectionArray[section];

}

/**

 *  設定頭標題的樣式,我這裡是手寫了一個button,button上放的圖片,文字.可以用別的方式

 */

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

{

UIButton *button = [UIButtonbuttonWithType:UIButtonTypeCustom];

    [button setFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];

    [button setTag:section+1];

    button.backgroundColor = [UIColorwhiteColor];

    [button setTitleColor:[UIColorgrayColor] forState:UIControlStateNormal];

    [button setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 60)];

    [button addTarget:selfaction:@selector(buttonPress:) forControlEvents:UIControlEventTouchUpInside];

UIImageView *line = [[UIImageViewalloc]initWithFrame:CGRectMake(0, button.frame.size.height-1, button.frame.size.width, 1)];

    [line setImage:[UIImageimageNamed:@"case_cell_Line"]];

    [button addSubview:line];

UIImageView *imgView = [[UIImageViewalloc]initWithFrame:CGRectMake(10, (44-22)/2, 22, 22)];

    [imgView setImage:[UIImageimageNamed:[NSStringstringWithFormat:@"icon-%ld",section+1]]];

    [button addSubview:imgView];

UIImageView *_imgView = [[UIImageViewalloc]initWithFrame:CGRectMake(self.view.frame.size.width-30, (44-6)/2, 10, 6)];

if ([_stateArray[section] isEqualToString:@"0"]) {

        _imgView.image = [UIImageimageNamed:@"icon-sjt"];

    }elseif ([_stateArray[section] isEqualToString:@"1"]) {

        _imgView.image = [UIImageimageNamed:@"icon-xjt"];

    }

    [button addSubview:_imgView];

UILabel *tlabel = [[UILabelalloc]initWithFrame:CGRectMake(40, (44-20)/2, 200, 20)];

    [tlabel setBackgroundColor:[UIColorclearColor]];

    [tlabel setFont:[UIFontsystemFontOfSize:16]];

    [tlabel setText:_sectionArray[section]];

    [button addSubview:tlabel];

return button;

}

/**

 *  headButton點選

 */

- (void)buttonPress:(UIButton *)sender

{

//判斷狀態值

if ([_stateArray[sender.tag - 1] isEqualToString:@"1"]){

//修改

        [_stateArrayreplaceObjectAtIndex:sender.tag - 1withObject:@"0"];

    }else{

        [_stateArrayreplaceObjectAtIndex:sender.tag - 1withObject:@"1"];

    }

    [_tableViewreloadSections:[NSIndexSetindexSetWithIndex:sender.tag - 1] withRowAnimation:UITableViewRowAnimationAutomatic];

}

/**

 *  返回section的高度

 */

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

{

return44;

}

@end

相關推薦

tableViewCell列表展開顯示二級列表

之前在網上看到過這種的,都是封裝的或者是用的第三方,這是自己寫的,有興趣大家也可以把他封裝起來留著自己用; #import "ViewController.h" #define WIDTH [UIS

vue 展開顯示更多 收起部分隱藏

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 &

vue 列表單擊顯示當前列表內容隱藏其他的列表頁,多次實現顯示隱藏的功能

  1.//class --    sel_div已經把樣式寫好了;通過控制sel_div來控制樣式的展示情況; 2.單擊時,重新給showQA賦值為index;showQA與下標相同時,顯示樣式;同一時間只有一個li滿足條件; 3.當第二次點選時,給一個狀態開關isSta

關於在列表中條目過多時顯示更多,全部顯示的效果

先上要的效果圖吧~ 拿到效果圖後的第一反應是 採用listView的不用型別的條目顯示,並對對相應的條目進行顯示(Visiable)與隱藏(gone)(第一類條目超過3個時就讓第3個位置顯示 顯示更多,並隱藏其他更多的第一類條目,點選第3個位置的條目,讓顯示更多隱藏,同時顯示更

Android 懸浮窗:可顯示/隱藏多功能列表

前言 最近在一個專案中,需要製作錄屏的功能,原先是在應用中有錄屏/控制的按鈕,思考之下覺得這種效果並不好,因此就想製作一個可以懸浮的懸浮窗,這樣不論手機在什麼介面中都可以對錄屏功能進行控制。 這裡就來構建一個桌面的懸浮窗,使用了DataBinding的MVV

JavaScript基礎 下拉列表 擊按鈕 顯示當前選項的索引值

element type -type html+css set cnblogs 列表 對象 clas 鎮場詩:    清心感悟智慧語,不著世間名與利。學水處下納百川,舍盡貢高我慢意。    學有小成返哺根,願鑄一良心博客。誠心於此寫經驗,願見文者得啟發。—————————

Vue.js指令小練習002 列表計算價格

需求如下: 分析: 點選li改變背景色加等於總價,再次點選還原背景色減等於總價。 程式碼: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>

Vue.js指令小練習001 列表變色

需求: 分析: 給li繫結一個背景色樣式,當你點選這個li的時候,這個li背景色的樣式生效,其他的li背景色樣式不生效 程式碼: <!DOCTYPE html> <html> <head> <meta charset="UTF-8

Flutter ListView 列表和網頁載入

上一篇講了使用ListView載入列表資料,本篇,我們講下列表項的點選,因為本篇的例子點選後是載入一個網頁,所以本篇也講下類似於Android的WebView和iOS的UIWebView載入網頁。效果如下: item點選 在Android中,您可以通過呼叫方法setOnClic

列表更改樣式

這一篇部落格是在上一篇gridview的基礎上改的。屬於功能增加,有興趣的可以看看 https://mp.csdn.net/postedit/82750123 其實點選更改樣式的邏輯很簡單,就是判斷點選的時候加個判斷即可。 1,xml <!--utils/gv/gv.

微信小程式實現給迴圈列表新增類(單項和多項)

在微信小程式裡面沒有DOM物件, 不能操作DOM. 所有的操作通過資料來實現,下面主要實現了給迴圈列表點選新增類的操作 一、單項 目標需求:實現下圖,給點選的view增加類,每次只能選擇一個。 主要思路:給點選的view增加類,

Vue.js指令小練習001 列表計算價格

需求如下: 分析: 點選li改變背景色加等於總價,再次點選還原背景色剪等於總價。 程式碼: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l

swt 根據響應獲取checkbutton列表中當前選中的checkbutton物件

這個其實很簡單,根據響應的SelectionEvent物件就可以獲得 呼叫SelectionEvent的getSource()方法獲得響應發出的物件 checkButtonArray = new Button[dest_nodes.length]; for (int i=0

今日總結 betterscroll使用 購物頁列表與滑動

cnpm install better-scroll --save   //安裝 import BScroll from 'better-scroll' //呼叫 <div class="left" ref="menuWrapper"> // 寫入ref

vue實現動態列表 各行換色

只是模擬一練習 v-for  v-on  v-bind的一個簡單demo程式碼思路:遍歷出data裡面的資料 v-for給li加點選事件繫結class樣式  怎麼控制樣式的顯示  通過 class的控制  v:bind:class={class:index==變數}  下標和

listview巢狀gridview,並實現grid元素部分顯示以及展開與摺疊

有時我們需要用GridView顯示目錄列表,有時甚至是二級的,即listview每一個item裡面又各自嵌入一個gridview,但是當二級目錄(資料條目)的數量過多時,介面會比較臃腫,這時我們就想要有類似展開與摺疊的效果,作者採用的策略是資料分段的分別顯示,其中對於顯示邊

小程式 列表變色

工作日誌 隨手筆記 僅供參考通過點選時候判斷點選的是哪一個,然後判斷item ==shopitem 使之變色<view class='shop_list' > <view class="shop_item{{item == shopitem?

recyclerView的介面回撥事件和多級列表展示

//activity中的方法 recyclerView = (RecyclerView) findViewById(R.id.rv3); list = new ArrayList<

JAVA音樂播放器(二)(實現列表播放)

package kk; import java.applet.Applet; import java.applet.AudioClip; import java.awt.BorderLayout; import java.awt.EventQueue; import j

dede 欄目後,二級欄目新頁面繼續呈展開狀態方法

 1,taglib/type.lib.php $row = $dsql->GetOne("SELECT id,reid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,content