tableView的使用(一)
//tableView的创建
//1.初始化 initWithFrame:style:(plian,gronp)
//2.设置属性(行高, 分割线, 表头, 表尾)
//3.添加到父视图
//4.释放
//tableView显示数据
//1.设置dataSource
//2.遵循协议<UITableViewDateSource>
//3.实现两个必须要实现的方法(a. 返回某个分区行数, b.返回cell)
//tableViewCell 创建
//1.重用标识符(static初始化一次,节约内存)
//2.通过标识符去复用池找cell
//3.判断cell是否找到, 如果没有找到, 创建cell(initWithStyle:reuseIdentifier)要释放autorelease
//4.判断括号外,对cell进行复制
//5.return cell
//
UITableViewDelegate, UITableViewDataSource一部分代理方法的使用
#import "TableViewController.h"
@interface TableViewController ()<UITableViewDelegate, UITableViewDataSource>//tableView想要实现显示内容必须遵守的协议
@end
@implementation TableViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title = @"Cell";
self.view.backgroundColor = [UIColor yellowColor];
//tableView的创建
//1.初始化
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
//2.设置属性(行高, 分割线, 表头, 表尾)
tableView.rowHeight = 60;
//UITableViewCellSeparatorStyleSingleLine(默认)
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
tableView.separatorColor = [UIColor redColor];
tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);
tableView.backgroundColor = [UIColor grayColor];
UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 375, 30)];
headerLabel.text = @"IOS应用排行榜";
headerLabel.textAlignment = NSTextAlignmentCenter;
tableView.tableHeaderView = headerLabel;//表头,需要先创建一个Label,然后把创建好的Label赋给表头表尾
[headerLabel release];
//通过表尾可以清除多余分割线
//tableView.tableFooterView = [[[UIView alloc] init] autorelease];
//设置是否允许多选
tableView.allowsMultipleSelection = YES;
//tableView,想要显示数据,使用dataSource模式, dataSource实质还是代理模式
//步骤a.设置dataSource
// b.遵循协议<UITableViewDateSource>
// c.实现两个必须要实现的方法(a.返回某个分区行数, b.返回cell)
tableView.dataSource = self;
tableView.delegate = self;
//3. 添加父视图
[self.view addSubview:tableView];
//4. 释放
[tableView release];
// Do any additional setup after loading the view.
}
#pragma mark -- UITableViewDataSource
//UITableViewDataSource中方法
//@required 必须要实现的两个方法1.和 2.
//1.设置行数(如果有分区的话,可以通过if判断每个分区,然后给每个分区赋不同的行数)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 10;//此处返回设置10行,返回10;
}
//2.UITableViewCell, 单元格类, 继承于UIView, 用于在UITableView上显示内容
//注:会执行多次, 每走一次, 创建一个cell; 第一次只创建出一个屏幕能够显示的cell,如果滚动tableView, 会再走这个方法,再次创建cell
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//cell重用机制(复用机制),用于降低内存消耗
//方法内部的实现
//a.定义重用标示,static 静态变量,初始化一次, 降低内存的消耗
static NSString *identifier = @"CELL";
//b.去重用队列中根据标识符取可重用的 cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
//c. 判断是否获取到可重用的 cell( 最后要空间释放 )
if (!cell) {//!cell 相当于 cell == nil
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;//辅助标示类型
}
//显示内容
cell.imageView.image = [UIImage imageNamed:@"李四"];
cell.textLabel.text = @"李四";
cell.detailTextLabel.text = @"我是李四";
return cell;
}
/*
//辅助表示类型 用accessoryType 赋值
UITableViewCellAccessoryNone, // don't show any accessory view
UITableViewCellAccessoryDisclosureIndicator, // regular chevron. doesn't track
UITableViewCellAccessoryDetailDisclosureButton, // info button w/ chevron. tracks
UITableViewCellAccessoryCheckmark, // checkmark. doesn't track
UITableViewCellAccessoryDetailButton NS_ENUM_AVAILABLE_IOS(7_0) // info button. tracks
*/
//@optional UITableViewDataSource 中不必实现但是经常用到的方法
//1.设置分组个数section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 3;//返回多少就是多少个分区
}
//2.设置区头(section)
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSArray *array = @[@"A", @"B", @"C"];
return array[section];
}
//3.设置区尾
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
NSArray *array = @[@"AAA", @"BBB", @"CCC"];
return array[section];
}
//4.右侧添加一个索引表
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
NSArray *aa = @[@"A", @"B", @"C"];
return aa;
}
#pragma mark - UITableViewDelegate
//UITableViewDelegate中得一些常用方法
//1.将显示单元格
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%s", __FUNCTION__);
}
//2.自定义区头视图
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *hearderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 375, 44)];
hearderView.backgroundColor = [UIColor yellowColor];
// UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
// label.text = @"zhao";
// [hearderView addSubview:label];
// [label release];
return [hearderView autorelease];
}
//3.自定义区尾视图
//- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
//{
//
//}
//4.设置每行间隔的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 80;
}
//5.选择哪一section的哪一行
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"section: %ld, row: %ld", indexPath.section, indexPath.row);
}
//6.设置选中的行所执行的动作
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//NSLog(@"%s",__FUNCTION__);
//NSUInteger row = [indexPath row];
return indexPath;
}
//设置让UITableView行缩进
-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%s",__FUNCTION__);
NSUInteger row = [indexPath row];
return row;
}
@end
tableView的使用(一)的更多相关文章
- iOS有关横向TableView的东西
之前看到Apple store里面有横向的tableview,当然也有可能是collectionview啦. 尤其是项目中只有一条那么需要横向滑动的东西,就没有必要使用庞大的collectionvie ...
- tableView显示第一个cell有偏移问题
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 0 ...
- [tableView reloadData] 和 runloop
需要[tableView reloadData]后需要立即获取tableview的cell.高度,或者需要滚动tableview,那么,直接在reloadData后执行代码是会有问题的. 断点调试感觉 ...
- 【代码笔记】iOS-一个tableView,两个section
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- 【Swift】Alamofile网络请求数据更新TableView的坑
写这篇BLOG前,有些话不得不提一下,就仅当发发恼骚吧... 今天下午为了一个Alamofire取得数据而更新TableView的问题,查了一下午的百度(360也是见鬼的一样),竟然没有一个简单明了的 ...
- TableView 滑动收起键盘
self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; 拖拽tableView就会收起键盘
- 关于TableView上有一段留白的解决方法
当cell的类型是plaint类型时 直接设置self.automaticallyAdjustsScrollViewInsets=NO; 还有要注意检查你自己设置的frame是否正确 当cel ...
- iOS监听tableView组头切换事件
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSIntege ...
- 【原】iOS学习之tableView的常见BUG
1.TableView头视图不随视图移动,头视图出现错位 错误原因:tableView的 UITableViewStyle 没有明确的声明 解决方法:在tableView声明的时候明确为 UITabl ...
- 两种让tableview返回顶部的方法
1. [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:_currentRow inSection:0] animat ...
随机推荐
- python 配置
一.下载 https://www.python.org/ftp/python/3.4.2/python-3.4.2.amd64.msi 二.配置python--eclipse插件 1.直接在eclip ...
- 深入浅出FPGA-2-让source insight 支持verilog HDL
引言 工欲善其事,必先利其器.最近用verilog在FPGA上做一个简易的计算器,整个工程由6个模块组成,之前写的代码都是很小的,模块也很少,一般就一两个,没感觉出别扭.但是模块多了就发现,模块之间的 ...
- 413. Reverse Integer【easy】
Reverse digits of an integer. Returns 0 when the reversed integer overflows (signed 32-bit integer). ...
- 0049 MyBatis关联映射--一对一关系
世上的事务总不是孤立存在的,表现在Java类里面,则是类与类之间的关系,比如继承is-a.依赖use-a.关联has-a,反映在数据库中,则是表与表之间的关系,比如外键 关联关系存在着以下几种类型:一 ...
- Vim 学习笔记二
1. 粘帖 p 光标前 P 2. 撤销对撤销的撤销 Ctrl+r 3. dl:删除一个字符,daw:删除一个单词,dap:删除一个段落 4. 单个c字符并无效果,cc删除整个一行 C:从当前光标出删除 ...
- Storm实战
需求: spout输出一些手机品牌小写名称,第一个bolt将手机名称转成大写,第二个bolt在手机名称的后面再追加上时间. 项目目录: 导入相关的jar包. RandomWordSpout.java: ...
- Control character in cookie value or attribute
在cookie中添加中文导致静态页面打不开, (1)先清除缓存 (2)使用escape()函数对中文进行编码,获取的时候在对中文进行解码unescape(). cookie.Set("sto ...
- python笔记-基础入门
Python 特点 1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单. 2.易于阅读:Python代码定义的更清晰. 3.易于维护:Python的成功在于 ...
- 第二百二十二节,jQuery EasyUI,DataGrid(数据表格)组件
jQuery EasyUI,DataGrid(数据表格)组件 学习要点: 1.加载方式 2.分页功能 本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于 Pa ...
- 【BZOJ】3301: [USACO2011 Feb] Cow Line(康托展开)
http://www.lydsy.com/JudgeOnline/problem.php?id=3301 其实这一题很早就a过了,但是那时候看题解写完也是似懂非懂的.... 听zyf神犇说是康托展开, ...