UI - UITableView表视图 ( 一 )

/************************ singleView 取消 ViewController 作为根视图控制器 ************************/

    //1.将Main.storyboard 删除
    //2.到工程设置里面找到 main interface, 将Main删除
    //3.在 AppDelegate 添加根视图控制器的选定

    //练习: 新建SingleView工程, 取消ViewController作为根视图控制器; 并新建一个导航控制器作为self.window的根视图, 并将ViewController作为导航视图控制器的根视图控制器

   /******************************* TableView *******************************/
  //        TableView 定义: 通常用来管理一组具有相同数据结构(定义成属性)

    //基本设置:(用iphone6S会出现滑动时, 分割线闪烁)
    self.tableview = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];//UITableViewStyleGrouped: 分区划分
    [self.view addSubview:self.tableview];

//  1.视图控制器对滚动的空间调节效果
    self.automaticallyAdjustsScrollViewInsets = YES;//(YES: 从导航栏开始分配, 可能会出现bug)

//  2.分割线的设置
    //(1)分割线的颜色
    self.tableview.separatorColor = [UIColor redColor];
    //(2)分割线的样式(UITableViewCellSeparatorStyle)
self.tableview.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    //(3)分割线的长短(结构体)(分割线相对于tableView上下左右的距离)(上下无效)
    self.tableview.separatorInset = UIEdgeInsetsMake(0, 30, 0, 30);

//  3.行高(默认是44)
    self.tableview.rowHeight = 100;

/********* TableView的两个协议<UITableViewDataSource, UITableViewDelegate> *********/
    //
    //一、UITableViewDataSource 数据源的协议方法
    self.tableview.dataSource = self;

    //例子: 设置学生姓名数组(属性)
    self.stuArr = @[@"aa", @"bb", @"cc"].mutableCopy;

//  两个必须实现的方法:
    //1.section分区下的行数
//    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

    //2.指定某行下显示怎样的细胞
//    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

//必须实现:
//1.section分区下的行数
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.stuArr.count;
}
//2.指定某行下显示怎样的细胞
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    //1.从重用池里面取出一个cell(取出一个被划出屏幕的cell ,目的: 节约内存)
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reusepool"];
    //2.如果取出的cell为空, 则创建一个cell
    if (cell == nil) {

        //类型设置成default, 无法显示副标题
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"reusepool"];
        //        NSLog(@"这是创建出来的cell");
    }
//    else{
//        NSLog(@"这是重用的cell");
//    }

    //indecPath section:当前cell的分区; row:当前cell所在分区的行数

//    cell的基本设置
    //1.cell的标题
    cell.textLabel.text = self.stuArr[indexPath.row];
    //2.cell的副标题
    cell.detailTextLabel.text = @"字母";
    //3.cell的图片
    cell.imageView.image = [UIImage imageNamed:@"2.jpg"];
    //4.cell的选中样式
    cell.selectionStyle = UITableViewCellSelectionStyleBlue;
    //5.辅助视图的类型(右侧箭头)
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    //6.自定义视图
//    cell.accessoryView

    return cell;

}

//可选:
//3.设置分区个数, 如果不实现本方法, 默认是1
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}

//4.设置页眉(页脚)的(分区)标题
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
    return @"你好";
}

//5.设置右侧的索引
-(NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView{
    return @[@"1", @"2", @"3"];
}

//  二、UITableViewDelegate
    self.tableview.delegate = self;

//可选:
//1.设置行高
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 70;
}
//2.分区头(尾)的高度
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return 70;
}
//3.自定义分区头(尾)(视图)
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    UILabel *label = [[UILabel alloc]init];//frame设置无效
    label.text = @"iOS";
    return label;
}
//4.cell的点击方法(seletion) ***
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
    SecondViewController *svc = [[SecondViewController alloc]init];
    [self.navigationController pushViewController:svc animated:YES];
    //取消选中状态
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}   

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值