美文网首页
03-UITableView简介和创建

03-UITableView简介和创建

作者: ForstDragon | 来源:发表于2018-10-18 16:54 被阅读0次
    UITableView.png
    UITableView的两种方式.png

    1,声明和创建要用的TableView,遵循数据源方法和代理,来用于实现数据加载和点击事件的接收.

    1,声明控件
    @interface TestViewController ()<UITableViewDataSource,UITableViewDelegate>
    @property (strong, nonatomic) UITableView *tableView;
    @end
    2,添加到self.view
      2.1直接创建添加
         self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 10, ScreenWidth, ScreenHeight - SafeAreaTopHeight - SafeBottomHeight - 56) style:UITableViewStylePlain];
         self.tableView.backgroundColor = [UIColor clearColor];
         self.tableView.separatorColor = Theme_Line_Color;
          self.tableView.delegate =self;
          self.tableView.dataSource = self;
          // 根据ID 这个标识 注册对应的cell类型 为UITableViewCell(只注册一次)
          //纯代码写的cell的注册方式
          [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"ID"];
    
          //如果你是用xib创建的cell的注册方式
          UINib *nib = [UINib nibWithNibName:NSStringFromClass([testCell class]) bundle:nil];
          [self.tableView registerNib:nib forCellReuseIdentifier:@"ID"];
          [self.view addSubview:self.tableView];
      2.2,懒加载的方式
      [self.view addSubview:self.tableView];
      - (UITableView *)tableView {
        if (!_tableView) {
            _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 10, ScreenWidth, ScreenHeight - SafeAreaTopHeight - SafeBottomHeight - 56) style:UITableViewStylePlain];
            _tableView.backgroundColor = [UIColor clearColor];
            _tableView.separatorColor = Theme_Line_Color;
            _tableView.delegate =self;
            _tableView.dataSource = self;
      //纯代码写的cell的注册方式
     //     [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"ID"];
    
            UINib *nib = [UINib nibWithNibName:NSStringFromClass([CollectionWebInformationCell class]) bundle:nil];
            [_tableView registerNib:nib forCellReuseIdentifier:CollectionWebInformationCellID];
        }
        return _tableView;
    }
    

    3,数据的加载

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 1;//一共多少组,默认为1,不是必须实现的,可以不写这个方法
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return 4;//每一组里面有多少个cell
        
    }
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 127;//设置每个cell的高度
    }
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
         //3.0 先确定cell的重用标识:命名规范:数据的模型+ID
          static NSString *ID = @"carID";  static修饰局部变量,局部变量只会分配一次内存地址
         //3.1 查看缓存池中是否有带重用标识的cell缓存池方法中封装了,如果缓存池中没有,就根据注册创建新的cell,然后返回给我们一个带ID的cell后面还封装了一层,如果也没有注册呢,会根据storyboard中是否标记了在重用cell,来创建一个新的cell然后返回
          UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
        //取消cell点击效果 
         cell.selectionStyle = UITableViewCellSelectionStyleNone;
         // 3.3 覆盖cell上的数据
              return cell;
    }
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
        
    }
    

    相关文章

      网友评论

          本文标题:03-UITableView简介和创建

          本文链接:https://www.haomeiwen.com/subject/zywjiftx.html