IOS笔记(1)

**

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];
}

//界面太丑就不晒了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值