IOS培训
美国上市IOS培训机构

400-111-8989

热门课程

几种常用的获取自定义TableViewCell

  • 时间:2015-07-27
  • 发布:佚名
  • 来源:达内

写下这篇文章的原因:在使用表格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路

9月份---iOS训练营课程安排

达内推出五大精品课程,推动IT培训进入培优时代

达内学员跨专业入职欧洲知名软件企业

ios培训哪家好 高薪就业数达内

选择城市和中心
贵州省

广西省

海南省