UITableView
自带滑动效果
创建方法和UIView相同
创建
UITableView *tableView=[[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
tableView.backgroundColor=[UIColor yellowColor];
[self.view addSubview:tableView];
UITable有两套协议方法,需要签两个协议
@interface RootViewController ()<UITableViewDataSource,UITableViewDelegate>
//设置行高
tableView.rowHeight=100;
//设置代理人
tableView.dataSource=self;
tableView.delegate=self;
主要协议方法
注:1.2.3用的比较多
1.主要功能就是实现点击
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"row = %ld",indexPath.row);
NSLog(@"section = %ld",indexPath.section);
NSLog(@"%@",self.arr[indexPath.row]);
}
2.通过这个方法可以让tableView显示内容
//这个方法只要有cell要出现,就会触发
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//tableViewCell通过重用避免了多余的创建,一般来讲一个tableView现实的cell数是有限的,所以为了提高效率,避免重复的创建,利用重用解决问题重用也是常见的tableView面试问题
//1.现指定一个cell的重用标识
//一般来讲,一个tableview对应一个重用标识,重用标志作用就是告诉系统哪个cell对应哪个tableView
static NSString *reuse=@"reuse";
//系统先会根据重用标识在重用池里找,有没有用闲置的cell,如果有直接拿来用,如果没有,再创建
UITableViewCell *cell=[tableView dequeueReusableHeaderFooterViewWithIdentifier:reuse];
//如果没找到对应的cell是0x0
if (!cell) {
cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuse] autorelease];
}
//cell提供了三种视图,两个label,一个imageView
cell.textLabel.text=self.arr[indexPath.row];
cell.detailTextLabel.text=[NSString stringWithFormat:@"%ld",indexPath.section];
cell.imageView.image=[UIImage imageNamed:@"c4.jpg"];
// NSLog(@"%ld",indexPath.row);
return cell;
}
3.设置tableView里有多少个分区
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 3;
}
4.设置不同行高
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row %2 ==0) {
return 100;
}else{
return 50;
}
}
5.指定每个分区有多少行
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if(section%2==0){
return 10;
}else{
return self.arr.count;
}
}
6.设置分区的标题
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return [NSString stringWithFormat:@"%ld",section];
}
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
return @"hello";
}
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
return @[@"a",@"b",@"c"];
}