• 对自定义UITableViewCell的理解


    自定义UITableViewCell有两种方法:

    1.较早版本 子类UITableViewCell   并利用xib构造

    2.利用storyboard直接自定义cell

    1.利用xib

    设计好自定义的cell并且连接好控件后  有两种方法引用我们自己的cell

    方法1:

     1 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
     2 {
     3     static NSString *cellIdentifier=@"name";
     4     BOOL nibsRegistered=NO;
     5     if (!nibsRegistered) {
     6         UINib *nib=[UINib nibWithNibName:@"MyCell" bundle:nil];
     7        [tableView registerNib:nib forCellReuseIdentifier:cellIdentifier];
     8         nibsRegistered=YES;
     9     }
    10     MyCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    11 //cell 上的元素初始化代码
    12 
    13 return cell;
    14 }
     UINib *nib=[UINib nibWithNibName:@"MyCell" bundle:nil];
    [tableView registerNib:nib forCellReuseIdentifier:cellIdentifier];
    这两句代码是引用我们自己定义的cell的关键 首先读取我们自己定义的cell的nib文件 再在tableView中注册 此时 我们定义的cell便加入
    到了tableView的可重用队列当中了
    MyCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    这句代码从中取出一个事例  然后初始化 并返回给tableView显示


    方法2:
     1 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
     2 {
     3     static NSString *tableCellIdentifier = @"name";
     4     MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:tableCellIdentifier];
     5     
     6     if(cell == nil){
     7         NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"MyCell" owner:self options:nil];
     8         for(id oneObject in nib){
     9             if([oneObject isKindOfClass:[MyCell class]]){
    10                 cell = (MyCell *)oneObject;
    11             }
    12         }
    13     }
    14     //cell初始化。。。
    15     
    16     return cell;
    17 }


    2.利用storyboard自定义cell
    利用storyboard自定义cell比较简单 较xib 方法 少了读取xib文件的一步

    在storyboard中拖出一个tableViewController后 拖上去一个cell 然后自己设计cell 最后一定要填上identifier
    此时cell已经磨人添加到了tableview的 重用队列中了
    引用的时候只需
    1 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    2 {
    3     //这个是在storyboard中设置的identifier
    4     static NSString *tableCellIdentifier = @"name";
    5     MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:tableCellIdentifier];
    6     //cell初始化
    7     return cell;
    8 }

    纯属自己的一些理解  写下来方便自己记忆   如有错误指出 希望大家讨论指正

    转载请著名出处

     
  • 相关阅读:
    Javascript定义类(class)的三种方法
    npm命令ionic安装失败cordova安装失败解决方法
    解决类似 Requires: libstdc++.so.6(GLIBCXX_3.4.15)(64bit)的问题
    log_format为Nginx设置日志格式
    Nginx设置日志分割方法
    java和h5 canvas德州扑克开发中(二)
    java和h5 canvas德州扑克开发中(一)
    使用Reaver破解开启了WPS功能的wifi密码(wpa/wpa2)
    在Wifi网络中嗅探明文密码(HTTP POST请求、POP等)
    创建假的wifi热点
  • 原文地址:https://www.cnblogs.com/bucengyongyou/p/2667330.html
Copyright © 2020-2023  润新知