美文网首页
通过xib加载UITableViewCell的新方式

通过xib加载UITableViewCell的新方式

作者: ShineYangGod | 来源:发表于2017-01-24 14:15 被阅读48次

    我们以前通常会这样做

    • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
      static NSString *CellIdentiferId = @"MomentsViewControllerCellID";
      MomentsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentiferId];
      if (cell == nil) {
      NSArray *nibs = [[NSBundle mainBundle]loadNibNamed:@"MomentsCell" owner:nil options:nil];
      cell = [nibs lastObject];
      cell.backgroundColor = [UIColor clearColor];
      };
        
     }
     return cell;
    

    }

    现在我们可以这么用
    采用registerNib的方式,并且把设置都放在了willDisplayCell方法中了,而不是以前我们经常用的cellForRowAtIndexPath
    这个方法我试了下,如果我们在xib中设置了 Identifier,那么此处的必须一致,否则会crash的

    • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
      {
      MyCustomCell * cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];
      if (!cell)
      {
      [tableView registerNib:[UINib nibWithNibName:@"MyCustomCell" bundle:nil] forCellReuseIdentifier:@"myCell"];
      cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];
      }

      return cell;
      }

    • (void)tableView:(UITableView *)tableView willDisplayCell:(MyCustomCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
      {
      cell.leftLabel.text = [self.items objectAtIndex:indexPath.row];
      cell.rightLabel.text = [self.items objectAtIndex:indexPath.row];
      cell.middleLabel.text = [self.items objectAtIndex:indexPath.row];
      }

    相关文章

      网友评论

          本文标题:通过xib加载UITableViewCell的新方式

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