點選Cell控制UITableViewCell的展開及關閉
先給大家看效果圖~
這篇分享源自會飛的烏龜愛看海博主的 http://www.jianshu.com/p/5439a989097d ,我自己稍加修改,然後在這兒呈現給各位看官。
本篇文章,cell的展開實際上就是改變cell的高度,然後重新整理改變高度的cell所在行就行了,具體其他的效果筆者在此不做贅述,具體原因是不會,各位可根據自己的情況實現。
下面是程式碼部分。
首先在storyBoard裡面畫一個tableView,並在ViewController的延展裡設為屬性。
//
// ViewController.m
// CellExpandAndShrink
//
// Created by Dom on 16/6/11.
// Copyright © 2016年 YG. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
///上一次選中的行
@property (nonatomic, assign) NSInteger selectedRow;
///記錄被開啟的行號的陣列
@property (nonatomic, strong) NSMutableArray *open;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self initTableView];
}
- (NSMutableArray *)open
{
if (_open == nil) {
_open = [NSMutableArray array];
}
return _open;
}
- (void)initTableView
{
self.tableView.dataSource = self;
self.tableView.delegate = self;
}
#pragma mark - UITableView Delegate Method
// 返回cell個數
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 10;
}
// 返回每行的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([self.open containsObject:[NSString stringWithFormat:@"%ld",indexPath.row]]) {
return 100;
}
else {
return 40;
}
}
// 請求資料來源代理為tableView插入需要的cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *reusid = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reusid];
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reusid];
}
if ([self.open containsObject:[NSString stringWithFormat:@"%ld",indexPath.row]]) {
// 開啟之後
cell.textLabel.text = @"快點關上~~~討厭~~~";
}
else {
// 正常狀態下
cell.textLabel.text = @"點選可以開啟我噢";
}
return cell;
}
// 監聽點選的cell
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"上一次選中的行號--%ld 本次點選的行號--%ld",(long)self.selectedRow,(long)indexPath.row);
if ([self.open containsObject:[NSString stringWithFormat:@"%ld",indexPath.row]]) {
// 包含,說明之前已經點選過,這次點選跟上一次是一樣的,從開啟陣列中移除
[self.open removeObject:[NSString stringWithFormat:@"%ld",indexPath.row]];
}
else {
// 不包含,說明這行是第一次點選,直接加進去就可以了
[self.open addObject:[NSString stringWithFormat:@"%ld",indexPath.row]];
}
// 記錄點選的行號
self.selectedRow = indexPath.row;
NSLog(@"%@",self.open);
// 重新整理點選的行
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
寫到這兒就沒有然後了,動態圖的效果就可以展示出來了。
這個工程比較簡單,GitHub就不傳了。最後感謝各位看官。
相關文章
- iOS 點選UITableViewCell上的控制元件獲取對應的celliOSUIView控制元件
- 點選可以展開和關閉的搜尋框程式碼例項
- mac 關閉app後,點選dock上的app重新開啟MacAPP
- iOS 中tableview cell點選取消選中效果iOSView
- (iOS)點選cell推出現新介面iOS
- iOS 實現展開TableViewCell,下拉celliOSView
- 下拉選單「點選外面關閉」的終極解決方案
- Oracle:PL/SQL--開啟控制檯or關閉控制檯OracleSQL
- swift點選Tableviewcell展開下拉選單內容SwiftView
- 文章點選展開和收起詳解
- php短視訊系統,點選按鈕開啟wifi或者關閉wifiPHPWiFi
- JavaScript 點選頁面其他地方關閉視窗JavaScript
- 自定義UIView UITableViewCell等控制元件UIView控制元件
- 直播平臺開發,點開大圖後,任意點選圖片位置都可關閉當前放大效果
- 操作選中cell 所有cell操作相同情況下
- BootStrap 模態框禁用空白處點選關閉問題boot
- iOS:改變UITableViewCell的選中背景色iOSUIView
- iOS初級開發學習筆記:tablevView中,點選cell後下部彈出下級列表,需實現cell高變化iOS筆記View
- js控制文字內容過多時候點選展開方式顯示全部內容demoJS
- ubuntu下開啟/關閉防火牆 及埠 - 命令Ubuntu防火牆
- centos7開放、關閉及檢視埠CentOS
- MySQL服務開啟關閉及登陸- 2MySql
- 點選右則剪頭展開和收起頁面選單
- iOS tableviewcell裡點選文字展開與收起功能iOSView
- 小程式迴圈列表點選展開收縮
- jQuery點選展開收起程式碼例項jQuery
- iOS開發之有間距的UITableViewCelliOSUIView
- jQuery實現的點選展開其他專案摺疊導航選單jQuery
- MUI TableViewCell 上按鈕點選Cell同時觸發解決UIView
- 【iOS開發】解決UITableview中選中Cell後,Cell複用導致選中狀態消失、應用閃退的問題iOSUIView
- 點選平滑下拉展開摺疊樹形導航選單
- 點選標題可以展開效果程式碼例項
- Google Chrome等瀏覽器不再允許關閉點選跟蹤GoChrome瀏覽器
- javscript/jquery 點選頁面其他地方關閉某個divjQuery
- javascript點選彈出可以關閉帶有灰色背景彈出層JavaScript
- 微信小紅點怎麼關閉?微信影片號關閉紅點的詳細圖文教程
- 如何禁用控制檯視窗的關閉按鈕?
- element-ui的日期選擇框底部清空按鈕點選不關閉日期選擇框的實現辦法UI