UITableViewCell不等于null

时间:2013-09-18 15:00:45

标签: ios uitableview storyboard

我在使用下面的代码时遇到了问题,它基本上是从故事板中实例化扩展的uitableviewcell。我遇到的问题是,似乎leftMenuCell 从不等于null,因此永远不会进入启动块。我做错了什么?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
      static NSString *CellIdentifier = @"LeftMenuCell";
      MenuCell *leftMenuCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

      if(leftMenuCell == nil) {
          NSLog(@"creating a new cell");
          leftMenuCell = [[MenuCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
      } ....

enter image description here

1 个答案:

答案 0 :(得分:9)

你没有做错任何事情,这就是在故事板中创建单元格时表视图的工作方式。当该单元格位于故事板中的表视图中时,dequeueReusableCellWithIdentifier:方法始终返回有效单元格。似乎许多程序员都没有想到这一点,并且仍然包含if cell == nil子句。这来自文档:

“如果dequeueReusableCellWithIdentifier:方法请求在故事板中定义的单元格,则该方法始终返回一个有效的单元格。如果没有等待重用的循环单元格,该方法将使用该信息中的信息创建一个新的单元格。故事板本身。这消除了检查nil的返回值并手动创建单元格的需要“