**
UITableView简介
**
在IOS开发中,UITableView是一个很基础也很重要的必修课,现在的许多app因为手机自身的小巧限制不适合使用pc端上的表格风格,因此基本上所有的的app都只保留了多行单列的UITableview视图而不是繁杂的表格视图。
1.UITableView属性
在UITableView中,最重要的无疑是cell,正是一个个多样化的cell才组成了整个的UITableView。
UITableView中的属性基本上包含:row及section。row表示有几行(几个cell),section则表示这个TableView有几组cell集。
UITableView要想实现,必不可少的方法有两个,即
numberOfSectionsInTableView:设置总共有多少组
numberOfRowInSection:设置某个组有多少行
其余如cellForRowAtIndexPath的方法是设置每个cell的内容的方法、titleForHeaderInSection是设置TableView的头标签视图等。
2.利用代码为UITableView写界面
步骤:
(1)在.h文件中new TableViewController并标明数据源和delegate
(2)在viewDidLoad中设置TableView大小(使用CGRectMake函数)
(3)设置有几组,每组几行(必须)
(4)利用cellForRowAtIndexPath函数传入的参数IndexPath.row区分第几个cell
从而对不同的cell做出不同的操作
(5)在viewDidLoad中使用[self.view addSubview:view];加载TableView
代码:
ViewController.h:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property(nonatomic,strong) UITableView* tableView;
@end
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
[self initTableView];
self.tableView.tableFooterView=[[UIView alloc]init];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)initTableView{
//整个TableView的高度宽度
_tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 20, width, height*5)];
_tableView.dataSource = self;
_tableView.delegate = self;
[self.view addSubview:self.tableView];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell=[[UITableViewCell alloc]init];
......//往cell中插入各种控件,如标签、按钮等。
return cell;
}
3.利用xib为UITableView写界面(cell复用)
(1)于.h文件中先创建一个TableViewController
(2)于.m文件中的ViewDidload函数中初始化TableViewController(注意delegate协议和datasourse协议要添加)
(3)viewDidload中addsubView
(4)绘制xib(单个cell);
(5)利用dequeueReuseCellWithIdentifer:ID(随意的NSString)复用cell
ps:此处可复用的cell在于你的一个cell多高,即单个界面能容纳的最大cell数
(6)在if(cell==nil)中利用bundle 的loadNibnamed方法载入xib文件
代码:
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (nonatomic,strong) UITableView * viewC;
/*以下四个为我的xib中的四个Label控件,需要与xib联系起来否则不能修改其值*/
@property (weak, nonatomic) IBOutlet UILabel *no;
@property (weak, nonatomic) IBOutlet UILabel *name;
@property (weak, nonatomic) IBOutlet UILabel *sex;
@property (weak, nonatomic) IBOutlet UILabel *age;
@end
ViewControlle.m
- (void)viewDidLoad {
[super viewDidLoad];
//初始化tableview,然后添加到self.view里面
self.viewC = [[UITableView alloc]initWithFrame:CGRectMake(0, 20, 500 , 1000)];
//20为状态栏高度
_viewC.dataSource = self;
_viewC.delegate = self;
[self.view addSubview:_viewC];
// Do any additional setup after loading the view, typically from a nib.
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 6;
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return (height-20)/6;
}
-(UITableViewCell *)tableView:(UITableView *)viewC cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{
static NSString *ID = @"cell";
UITableViewCell *cell = [viewC dequeueReusableCellWithIdentifier:ID];//复用cell
if(cell == nil)
{ /*bundle的loadNibnamed方法来加载xib*/
NSBundle *bundle = [NSBundle mainBundle];
NSArray *objs=[bundle loadNibNamed:@"View" owner:self options:nil];
cell = [objs firstObject];
}
/*四个Label与xib的四个控件绑定,tag在xib中修改*/
UILabel *no=(UILabel *)[cell viewWithTag:1];
UILabel *name=(UILabel *)[cell viewWithTag:2];
UILabel *sex=(UILabel *)[cell viewWithTag:3];
UILabel *age=(UILabel *)[cell viewWithTag:4];
.......//此处设置Label的text略去
[self.view addSubview:cell];
return cell;
}
//下方法可将选中cell的选中状态去除
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
//界面太丑就不晒了