dequeueReusableCellWithIdentifier是否适用于ARC?

时间:2012-02-04 17:26:18

标签: iphone objective-c ios5 automatic-ref-counting uistoryboard

在iOS5中,在故事板上使用ARC和原型单元格用于tableView,我可以替换下面的代码:

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView 
  dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] 
      initWithStyle:UITableViewCellStyleDefault 
      reuseIdentifier:CellIdentifier];
}

// Configure the cell...
return cell;

使用这个简单的代码?:

UITableViewCell *cell = [tableView 
  dequeueReusableCellWithIdentifier:@"Cell"];
return cell;

我在这个链接上看到了这个:

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

提前感谢!

2 个答案:

答案 0 :(得分:2)

发生此问题是因为您没有从故事板创建MenuViewController。你正在创建它:

MenuViewController *menuViewController = [[MenuViewController alloc] init];

MenuViewController的实例未连接到故事板,因此它不知道故事板中的原型单元格。

您需要进入故事板并将MenuViewController的标识符设置为menuViewController。然后你可以创建一个像这样的实例:

MenuViewController *menuViewController =  [self.storyboard instantiateViewControllerWithIdentifier:@"menuViewController"];

答案 1 :(得分:0)

我的解决方案终于如此:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier
                                                          forIndexPath:indexPath];

cell = [cell initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

因为从iOS 5.0开始,第一行代码永远不会产生nil值,我没有看到其他方法来指定我想要的样式。或者,我可以从库中添加一个Table View Controller实例,然后我可以编辑原型单元格中的样式。