关于复用以及两种自定义Cell的方式

关于自定义cell的两种方式,我之前写过这篇博客,当时并不懂复用以及创建时一些代码的实际意思,导致之后我自己用的时候经常性的漏掉一句,现在我有点理解了,来写一下,也算对当时这篇博客的完善。
首先我们看不用创建文件的第一种自定义cell的方式

    UITableViewCell *cell1 = [tableView dequeueReusableCellWithIdentifier:@"cell1"];// 1
    if (cell1 == nil) {
        cell1 = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell1"];  // 2
    }
    return cell1
  1. 首先我们是根据复用标识符“cell1”从TableView的复用池去找有没有可以复用的cell
    • 这里解释一下复用是什么,假如一个屏幕最多可以显示10个cell,第一个cell划上去看不到了,那么这个cell就会加入TableView的复用池中,等屏幕下方要滑出新的cell的时候,直接把消失的第一个cell重新显示在底部,这时整个TableView只需创建10个cell
  2. 因此我们第二步是先判断是否cell1 == nil,如果是nil,就是说没有,要新建一个

然后我们来看第二种方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  {
    MusicTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"musicCell"forIndexPath:indexPath];  //  1
    return cell;    //  2
}
  1. 这里我们没有在判断if (cell == nil)了,原因是仔细看这个函数比上面那个函数多了一个forIndexPath:indexPath,因此不需要再次进行判断了,当然,前面的注册绝对不能忘
  2. 如果想知道具体原因的,可以看这篇博客

你可能感兴趣的:(Objective-C,iOS,UI控件)