1.自定义的Cell(纯代码方式定义,后期做项目用的较多)
解决方案:1.将原有创建出来的ViewController删掉:
2.创建一个TableViewController继承UITableViewController:将面板中的View删掉,换成TableViewController ,将图形的Class关联到TableViewController
注意identifier的地方应该与你一会要自定义的Cell标记的名字一致;
3.因为是自己用代码创建的Cell ,所以面板中的View中的Cell要进行删除,否则系统会报错:说面板中的Cell没有方法: 因为没有删除,没代码,没实现!
4.因为是自定义的Cell 所以需要创建一个类 名称随意:继承的是UiTableViewCell ,因为是自定义的,所以在TableViewController 类中的代码也需要
修改,改成下列代码
5.因为现在是纯代码写的,所以应该把forIndexPath去掉,改成手动写,和以前创建UitableView一样 就是if(!cell)
MyCell *cell =[tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (!cell) {
cell = [[MyCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:@"Cell"];
}
cell.myLabel.text = [NSStringstringWithFormat:@"%d",indexPath.row];
6.现在的创建的Cell类虽然被 uitableviewcontroller继承,但是Cell类中没有写任何代码:所以想要做样式需要修改Cell中的代码(在初始化方法里)
2:用代码和xib结合的方式自定义控件:
解决方案:在上个纯代码实现的基础上:添加一个空的XIB文件, 命名需要和你要继承的类名一致,方便区分。
1.与第一种方式不同的是 因为是结合的方式,所以初始化自己写的方法就不行了 需要bunble
MyCell *cell =[tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (!cell) {
cell = [[[NSBundlemainBundle]loadNibNamed:@"MyCell"owner:selfoptions:nil]lastObject];
}
cell.myLabel.text = [NSStringstringWithFormat:@"%d",indexPath.row]; //myCell.xib的view中需要和重用标识进行关联。
3.使用storyboard方式进行定义控件的方法实现:
解决方案:1.其他方式也一样 只需要将面板中的tableviewcontroller中拖Cell还有Label然后进行class关联,并且label需要在类中进行声明
2.给面板中的Cell添加标识, 还有Cell类型与定义的类进行关联
第三种只需要这么写就行,就是自定义的过程,然后删了一些代码、 可以与上图的代码比较:第七行:重新加入了indexpath 没有了IF(!CELL)判断