tableViewCell列表點選展開顯示二級列表
之前在網上看到過這種的,都是封裝的或者是用的第三方,這是自己寫的,有興趣大家也可以把他封裝起來留著自己用;
#import "ViewController.h"
#define WIDTH [UIScreen mainScreen].bounds.size.width
#define HEIGHT [UIScreen mainScreen].bounds.size.height
@interfaceViewController ()<UITableViewDataSource,UITableViewDelegate>
@property (nonatomic, strong)
@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 = @[@"工程獅",@"程式猿"
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;
}
/**
* 設定section的title
*/
- (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