UITableView
来源:互联网 发布:工具书阅读软件 编辑:程序博客网 时间:2024/06/07 01:11
- (void)viewDidLoad {
[superviewDidLoad];
self.view.backgroundColor=[UIColorcyanColor];
self.navigationController.navigationBar.translucent=NO;
self.title=@"表视图";
//按照scrollView的步骤,用自己的初始化方法创建一个TableView
UITableView *tableView=[[UITableViewalloc] initWithFrame:CGRectMake(0,0, self.view.frame.size.width,self.view.frame.size.height-64)style:UITableViewStylePlain];
[self.viewaddSubview:tableView];
[tableViewrelease];
tableView.backgroundColor=[UIColorpurpleColor];
//设置行高
tableView.rowHeight=100;
//tableView的两套代理方法,
//协议1的代理人
tableView.dataSource=self;
//协议2代理人
tableView.delegate=self;
// Do any additional setup after loading the view.
}
//第一套协议
UITableViewDataSource协议
#pragma mark tableView第一个必须实现的协议方法,指定分区内有多少行
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//奇数分区有5行,偶数分区有10行
//先执行设置分区的方法,后执行每个分区有多少行
if (section%2 ==1) {
return 5;
}else{
return 10;
}
//让数组里的元素个数和行数保持相同
return self.arr.count;
}
#pragma mark tableView第二个协议方法,主要用来显示数据
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//创建相应个数的cell
// static特点:1.只初始化一次 2.如果没有初始值,默认是0 3.直到程序结束才会消失
//当cell显示结束之后,会把cell统一放到重用池中,等需要cell显示了,先从重用池中找,看有没有闲置的cell,如果有的话用闲置的cell,如果没有再创建,
//cell的重用目的是为了节约创建成本,用有限的cell把所有数据都显示出来
//第一句话:给重用池先设置一个重用的标志,根据这个标志可以找到对应的重用池
static NSString *reuse=@"reuse";
//tableView通过重用标志在重用池中寻找cell,如果有闲置的cell,cell会保存一个有效的cell对象地址,如果没有,cell里面则是nil,空
UITableViewCell *cell=[tableViewdequeueReusableCellWithIdentifier:reuse];
if (!cell) {
// cell == nil
//如果没有cell则创建cell
cell=[[[UITableViewCellalloc] initWithStyle:UITableViewCellStyleValue1reuseIdentifier:reuse] autorelease];
}
//对cell进行赋值
//cell里有默认的3个控件:imageView ,2个Label
cell.textLabel.text=self.arr[indexPath.row];
cell.detailTextLabel.text=[NSStringstringWithFormat:@"%ld",indexPath.section];
cell.imageView.image=[UIImageimageNamed:@"h7.jpeg"];
NSLog(@"%ld",indexPath.row);
//indexPath.row保存的是行数,从0开始
return cell;
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 5;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
//每个分区有一个条,分区的头标题
return@"动物保护区";
}
#pragma mark 索引
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
NSArray *arr=@[@"0",@"1",@"2",@"3",@"4"];
return arr;
}
//第2套:
UITableViewDelegate
#pragma mark tableview的点击方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"section:%ld,row:%ld",indexPath.section,indexPath.row);
//打印当前点击的人名叫什么
NSLog(@"%@",self.arr[indexPath.row]);
//创建一个下一页
//点击之后跳到下一页
SecondViewController *seVC=[[SecondViewControlleralloc] init];
[self.navigationControllerpushViewController:seVC animated:YES];
[seVCrelease];
}
//定义一个数组的属性
//重写初始化方法
-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self=[superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.arr = [NSMutableArrayarrayWithObjects:@"宋江",@"卢俊义",@"吴用",@"公孙胜",@"关胜",@"林冲",@"秦明" ,@"呼延灼" ,@"花容",@"柴进",@"李应",@"朱仝",@"鲁智深",@"武松",nil];
}
return self;
}
- UITableView
- UITableView
- UITableView
- UITableView
- UITableView
- UITableView
- UITableView
- UITableView
- UITableview
- UITableView
- UITableView
- UITableView
- UITableView
- UITableView,
- UITableView
- UITableView
- UITableView
- UITableView
- C++面向对象高级开发No.2 - Class With Pointer
- poj 2481 Cows 树状数组
- 【笔试】7、统计出其中英文字母、空格、数字和其它字符的个数
- 黑马程序员--java基础--基础语法
- makefile 多目标和多规则
- UITableView
- JAVA版微信支付V3-完全版
- scala 第75讲:模式匹配下的For循环
- 栈的压入、弹出序列
- 触摸和摇一摇
- gcc简单使用
- 微信支付详解
- orcale 控制用户权限
- 第十四章约束