• (4) IOS笔记本——UITableView的基本应用


    ◇UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳,在特定情况下我们使用UIScrollView而不是UITableView。

    ◇UITableView通过一个数据源(dataSource)来显示数据,会向数据源查询一共有多少行数据,以显示什么数据。

    ◇举一个小例子,我们要做如下图的的一个下拉表格:

                                                           

    ◇步骤为:

        ◇1、利用MVC的设计模式建立模型,(MVC的思想:只要修改了模型,视图界面一并跟着修改)

        ◇2、准守协议,设置模型数据

        ◇3、设置UITableView的各个属性,并且绑定数据源

    ◇具体实现方法:

        ◇1、建立模型,新建一个cocoa文件,把下面代码写在.h文件的定义(@interface)中

    1 //用于描述标题
    2 @property (nonatomic,copy) NSString *title;
    3 
    4 //用于描述详细描述
    5 @property (nonatomic,copy) NSString *desc;
    6 
    7 //用于存放汽车品牌
    8 @property (nonatomic,strong) NSArray *car;

        ◇2、准守协议,设置模型数据

     1 @interface ViewController () <UITableViewDataSource>  //准守协议
     2 。。。 。。。 。。。
     3 @property (nonatomic,strong) NSArray *carGroups;//定义数组变量
     4 。。。 。。。 。。。
     5 //设置模型数组
     6 -(NSArray *)carGroups{
     7     if(_carGroups == nil){
     8         
     9         //德系品牌
    10         CarGroup *cg1 = [[CarGroup alloc] init];
    11         cg1.title = @"德系品牌";
    12         cg1.desc = @"德国品牌德国品牌德国品牌德国品牌";
    13         cg1.car = @[@"大众",@"奔驰",@"奥迪"];
    14         
    15         //日系品牌
    16         CarGroup *cg2 = [[CarGroup alloc] init];
    17         cg2.title = @"日系品牌";
    18         cg2.desc = @"日系品牌日系品牌日系品牌日系品牌";
    19         cg2.car = @[@"丰田",@"本田",@"因菲妮迪"];
    20         
    21         //欧系品牌
    22         CarGroup *cg3 = [[CarGroup alloc] init];
    23         cg3.title = @"欧系品牌";
    24         cg3.desc = @"欧系品牌欧系品牌欧系品牌欧系品牌";
    25         cg3.car = @[@"劳斯莱斯",@"兰博基尼",@"宾利",@"劳斯莱斯",@"兰博基尼",@"宾利"];
    26     
    27         _carGroups = @[cg1, cg2, cg3];
    28     }
    29     return _carGroups;
    30 }

        ◇3、设置UITableView的各个属性,并且绑定数据源

     1 //设置一共有多少组数据
     2 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
     3     return self.carGroups.count;
     4 }
     5 
     6 //设置每组数据有多少行信息
     7 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
     8     CarGroup *cg = self.carGroups[section];
     9     return cg.car.count;
    10 }
    11 
    12 //设置每个cell的内容
    13 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    14     
    15     //实例化cell对象
    16     UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
    17     
    18     // 取出第indexPath.section组对应的模型
    19     CarGroup *cg = self.carGroups[indexPath.section];
    20     
    21     // 取车第indexPath.row这行对应的品牌名称
    22     NSString *car = cg.car[indexPath.row];
    23     
    24     // 设置cell显示的文字
    25     cell.textLabel.text = car;
    26     
    27     return cell;
    28 }

         ◇附一张UITableViewCell的UITableViewCellStyle枚举类型属性图:

                                                    

  • 相关阅读:
    云计算解决方案百度文库
    【QA5】【mysql问题】ERROR 1045 (28000): Access denied for...
    linux系统管理 简单常用命令
    【QA4】【sudoers问题解决】(*** is not in the sudoers file.This incident will be reported)
    自动化测试框架实践1autotest
    Syndication命名空间实现RSS功能学习
    Javascript中撤销方法
    asp.net 中一次性更新所有GRIDVIEW的记录(转)
    Oralce 一次执行多条语句
    asp.net 防注入式攻击
  • 原文地址:https://www.cnblogs.com/kaolalovemiaomiao/p/5257128.html
Copyright © 2020-2023  润新知