UITableView
表视图 UITableView,iOS中最重要的视图,随处可见
表视图通常用来管理一组具有相同数据结构的数据
表视图继承自UIScrollView,所以可以滚动
表视图的每一条数据都是显示在UITableViewCell对象中
表视图可以分区显示数据,每个分区称为一个section,每一行称为row,编号都是从0开始
@implementation MainViewController
- (void)dealloc
{
[_tableArray release];
_tableArray = nil;
[super dealloc];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
_tableArray = [[NSMutableArray alloc]init];
[_tableArray addObject:@"刘喆"];
[_tableArray addObject:@"刘少辉"];
[_tableArray addObject:@"龚宁"];
[_tableArray addObject:@"吴东阳"];
[_tableArray addObject:@"侯迪"];
}
return self;
}
- (void)loadView
{
[super loadView];
}
// 状态栏 20 导航栏 44
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
//设置透明度
self.navigationController.navigationBar.translucent = NO;
//创建一个 UITableView
UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, self.view.frame.size.height - 64) style:UITableViewStylePlain];
//设置代理人
tableView.dataSource = self;
tableView.delegate = self;
//设置行高 UITableView中会出现很多行
[tableView setRowHeight:50];
//设置表头
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0,0,100, 100)];
[label setBackgroundColor:[UIColor blackColor]];
[tableView setTableHeaderView:label]; //需要一个UIView类型的参数 宽度和tableView的宽度相同 高度自定义
//设置分割线颜色
[tableView setSeparatorColor:[UIColor cyanColor]];
[self.view addSubview:tableView];
// [label release];
[tableView release];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark 实现协议的方法
//一个section有多少row
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//一个Section中有多少row
//数组的元素个数
if (section == 0) {
return 3;
} else {
return 2;
}
// return [_tableArray count];
}
//该方法能为row添加cell(内容)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//设置重用池key
static NSString *cellIdentify = @"cellIdentify";
//取cell
//CustomTableViewCell 自定义类 里面的控件放在 self.contentView上
CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentify];
//判断cell是否存在
if (!cell) {
//如果不存在 创建UITableViewCell 对象 并且放到重用池里
cell = [[[CustomTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentify]autorelease]; //最后一个参数是重用池的key
}
//参数 indexPath 有两个属性 一个是section 只的哪个区域 一个是row
NSString *str =[_tableArray objectAtIndex:indexPath.row];
//cell的内容
// [cell.textLabel setText:str];
// [cell.imageView setImage:[UIImage imageNamed:@"1.jpg"]];
// [cell.detailTextLabel setText:@"hello"];
[cell.label1 setText:str];
return cell ;
}
//设置有多少个section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 3;
}
//设置section头标题的名称
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;
{
if (section == 0) {
return @"A";
} else{
return @"B";
}
}
//设置section脚标题的名称
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return @"你TM来打我呀";
}
//设置行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 50;
}
//设置section头标题的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 30;
}
//设置section脚标题的高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 30;
}
//右侧添加一个索引表
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
NSMutableArray *arr = [NSMutableArray array];
for (int i = 65; i <= 90; i++) {
[arr addObject:[NSString stringWithFormat:@"%c", i]];
}
return arr;
}