3

我在下面的代码中遇到了问题,它基本上是从情节提要中实例化一个扩展的 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];
      } ....

在此处输入图像描述

4

1 回答 1

9

您没有做错任何事情,这就是您在情节提要中制作单元格时表格视图的工作方式。dequeueReusableCellWithIdentifier: 方法总是在该单元格位于情节提要的表格视图中时返回一个有效单元格。似乎很多程序员还没有弄清楚这一点,仍然包括 if cell==nil 子句。这是来自文档:

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

于 2013-09-18T15:10:34.877 回答