美文网首页
自定义UITableViewCell中注册cell及reuseI

自定义UITableViewCell中注册cell及reuseI

作者: 黑羽肃霜 | 来源:发表于2016-07-26 21:22 被阅读2333次

    关于创建中的注册问题

    • 代码创建
    • storyboard中直接创建
    • 通过XIB进行nib创建

    几种创建方式都需要添加一个静态字符串作为reuseID

    NSString * const SecCustCell = @"SecCustCell";
    tips:
    

    自定义cell时,记得将其他内容加到self.contentView 上,而不是直接添加到 cell 本身上

    ---代码创建---

    ViewDidLoad中,注册一个reuseID:

    [self.tableView registerClass:[CustomTableViewCell class]
           forCellReuseIdentifier:SecCustCell];
    

    ---storyboard创建---

    • 在storyboard中直接创建,并需要填写reuseID.如下图。在这个过程其实已经注册了reuseID


      storyboard中设置reuseID
    • 当然,在storyboard中创建的CustomCell,也是可以关联类并添加方法的,这点和XIB相比也各有优势:
      storyboard中自定义cell同样可以拖曳事件
    • 在这种情况下,viewdidload中切忌再写上[self.tableview registerClass...]的字眼,这样会造成注册了两个reuseID,当调用的时候取的就不是storyboard的内容了,会造成看不到我们绘制的 CustomCell

    ---XIB创建---

    不用多说,是另外新建一个XIB绘制好相应的CustomCell然后嵌入到当前viewcontroller的storyboard或XIB.
    但是注册必须通过 registerNib来实现

    [self.tableView registerNib:[UINib nibWithNibName:@"Template1Cell" bundle:nil] forCellReuseIdentifier:kTemplate1CellID];
    

    总结一:

    自定义cell时,

    • 若使用nib,使用 registerNib: 注册,dequeue时会调用 cell 的-(void)awakeFromNib
    • 代码创建,使用 registerClass: 注册, dequeue时会调用 cell 的 - (id)initWithStyle:withReuseableCellIdentifier:
    • 使用storyboard,在绘制的时候就已注册,不能再另外调用registerClass,否则创建的cell会不显示

    自定义UITableViewCell的调用

    • 使用dequeueReuseableCellWithIdentifier:可不注册,但是必须对获取回来的cell进行判断是否为空,若空则手动创建新的cell;

    If you registered a class for the specified identifier and a new cell must be created, this method initializes the cell by calling its initWithStyle:reuseIdentifier: method. For nib-based cells, this method loads the cell object from the provided nib file. If an existing cell was available for reuse, this method calls the cell’s prepareForReuse method instead.

    • 使用dequeueReuseableCellWithIdentifier:forIndexPath:必须注册,但返回的cell可省略空值判断的步骤。

    You must register a class or nib file using the registerClass:forCellWithReuseIdentifier: or registerNib:forCellWithReuseIdentifier: method before calling this method.

    参考链接

    相关文章

      网友评论

          本文标题:自定义UITableViewCell中注册cell及reuseI

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