IOS培训

亿元级外企ios培训企业

  • 全国服务监督电话4001118989
  • 几种常用的获取自定义TableViewCell

    发布:佚名  来源:达内  时间: 2015年07月27日

  • 在使用表格l的时候获取cell时总是不能正确的获取创建好的cell模板,一不小心会出现一下错误,我总结出了三种方法...

  • 写下这篇文章的原因:在使用表格l的时候获取cell时总是不能正确的获取创建好的cell模板,一不小心会出现一下错误
    reasoon:unable to dequeue a cell with identifier cell -must regiseter a nib or a class for  the identifier or connect a propotype cell in a storyboard.
    这种情况是在获取cell的方式不正确。在我学习的现阶段,我使用的比较多的是一下三种方法:
    方法一:在自定义UITableViewCell类的xib文件中获取自定义cell
    1.创建UITableViewCell 类MyCell,并附加上xib文件,在这个xib中添加需要的控件,并将其拖拽成属性,创建一个类A的对象a,a用于存储控件所需的数据
    2.在tableViewController 中注册
    UINib *nib=[UINib nibWithNibName"MyCell" bundle:nil];       //得到创建的cell 的xib
    [self.tabelView registerNib:nib forCellReuseIndentifier:Identifier]; //注册
    3.从注册好的cell
    MyCell *cell=[tableView dequeReuseableCellWithIdentifier:Identifier];
    通过indexPath获得的对象赋值给MyCell类中的a,我们可以在a的getter中完成对对各个控件的赋值,这样使得三问一答中的代码显得比较简洁。
    方法二:在UITableViewController的xib中获取静态的cell
    1.创建UITableViewController并附加xib。我们可以往xib的外面拖入一批TableViewCell控件,对每个cell进行配置,要想使用这些cell,可以将它们提升为属性。在三问一答得一答中。
    可以直接获得这些cell。列如:三个配置好的cell属性名分别为:cell1,cell2,cell3
    UITableViewCell *cell=nil;
    if(indexPath.row==0) cell=cell1;
    else if(indexPath.row==1) cell=cell2;
    else if(indexPath.row==2) cell=cell3;
    return cell;
    //当然具体情况具体处理,这种方法针对静态表格
    方法三:在storyboard中获取自定义的cell
    1.拖拽一个TableViewController,向其中添加一个或者多个Table ViewCell,并配置cell。.在这些cell的第四个检查器的identifier中添加标志,加入我添加了三个cell,分别标志为cellID1,cellID2,cellID3,此时就注册了三个cell。
    .创建三个UITableViewCell类,MyCell1,MyCell2,MyCell3,不添加xib。在这些storyboardl的cell中第三个检查器分别关联这三个类。
    将各个cell中的控件分别关联(变为属性)到各自的关联的类的头文件中,以便外界访问。
    2.因为我们已经在storyboard中注册了cell,所以不需要再在UITableViewContrloller中注册,而是直接按照标志取出就可以使用了。
    if(indexPath.row==0)
      MyCell1 *cell=[tableView dequeReuseableCellWithIdentiier"cellID1"];
    if(indexPath.row==1)
      MyCell2 *cell=[tableView dequeReuseableCellWithIdentiier"cellID2"];
    else
      MyCell3 *cell=[tableView dequeReuseableCellWithIdentiier"cellID3"];
    return cell;
    补充:虽然大多时候能将cell或则其中的控件升级为属性,但是们今天在创建好的UITableViewController的xib中,添加了一个cell,并向cell中添加了控件,将其连接到我的类中。系统会报一下错误:
    reason:The cell outlet from the MyTableViewController to the mycell is invalid,outlets cannot to repeating content。
    说明我们的cell已经重复了。
    针对这些让我容易产生混乱的问题,我吧他们写在一起了。如果有错误请大家指出,毕竟我也才接触IOS一个多月。
  • 上一篇:IOS多线程的那些事

    下一篇:我的iOS路

网站导航
2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56