子类化UITableViewCell& [tableView dequeueReusableCellWithIdentifier:CellIdentifier]

时间:2015-06-28 00:45:25

标签: ios objective-c swift uitableview

我正在尝试了解[tableView dequeueReusableCellWithIdentifier:CellIdentifier]的工作原理。这是我的情况:

我在IB中设计了我的UITableViewCell子类,现在我在我的子类中尝试样式我的子元素。不幸的是,方法[tableView dequeueReusableCellWithIdentifier:CellIdentifier]似乎没有调用我的单元子类中的任何方法。我使用的方法是initWithCoderinitWithFrameinit

这是我的实际代码:

static NSString *BasicCellIdentifier = @"BasicCell";
GSFeedBasicTableViewCell *basicCell = [tableView dequeueReusableCellWithIdentifier:BasicCellIdentifier];

My Cells正在显示,但我想在我的子类中进一步自定义单元格,以避免在TableController中使用样式代码。任何提示都非常感谢。

2 个答案:

答案 0 :(得分:2)

  1. 使用XIB时,需要先注册

    [self.tableView registerNib:[UINib nibWithNibName:@"IBNameofthiscell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"youridentifier"];
    
  2. 然后您可以使用dequeueReusableCellWithIdentifier

    1. 如果使用故事板,请不要忘记设置此单元格的类 到您的自定义类,并将标识符设置为您的标识符。
    2. enter image description here

      enter image description here

      3.然后使用此功能

      CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];

答案 1 :(得分:1)

当您将单元格出列时,将调用子类的initWithCoder:方法。因此,您可以覆盖它以实现自定义行为。您还可以使用awakeFromNib方法执行自定义。

如果您在代码中完全设计了单元格,则将调用子类的initWithStyle:reuseIdentifier:方法而不是initWithCoder: