您的位置:首页 > 产品设计 > UI/UE

UITableView

2015-08-08 21:23 253 查看
- (void)viewDidLoad {

[super
viewDidLoad];

self.view.backgroundColor=[UIColor
cyanColor];

self.navigationController.navigationBar.translucent=NO;

self.title=@"表视图";

//按照scrollView的步骤,用自己的初始化方法创建一个TableView

UITableView *tableView=[[UITableView
alloc] initWithFrame:CGRectMake(0,
0, self.view.frame.size.width,
self.view.frame.size.height-64)
style:UITableViewStylePlain];
[self.view
addSubview:tableView];
[tableView
release];
tableView.backgroundColor=[UIColor
purpleColor];

//设置行高
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=[tableView
dequeueReusableCellWithIdentifier:reuse];

if (!cell) {

// cell == nil

//如果没有cell则创建cell

cell=[[[UITableViewCell
alloc] initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:reuse] autorelease];
}

//对cell进行赋值

//cell里有默认的3个控件:imageView ,2个Label
cell.textLabel.text=self.arr[indexPath.row];
cell.detailTextLabel.text=[NSString
stringWithFormat:@"%ld",indexPath.section];
cell.imageView.image=[UIImage
imageNamed:@"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=[[SecondViewController
alloc]
init];

[self.navigationController
pushViewController:seVC animated:YES];
[seVC
release];
}

//定义一个数组的属性

//重写初始化方法
-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle
*)nibBundleOrNil
{

self=[super
initWithNibName:nibNameOrNil
bundle:nibBundleOrNil];

if (self) {

self.arr = [NSMutableArray
arrayWithObjects:@"宋江",
@"卢俊义",
@"吴用",
@"公孙胜",
@"关胜",
@"林冲",
@"秦明" ,@"呼延灼" ,
@"花容",@"柴进",
@"李应",
@"朱仝",@"鲁智深",@"武松",nil];
}

return
self;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: