0

这个问题是关于 cellForRowAtIndexPath 的。

据我所知,正确的方法是

UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"];
return cell;

但是当我创建主从模板时,代码看起来像这样

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
 [self configureCell:cell atIndexPath:indexPath];
 return cell;
}

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
 NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
 cell.textLabel.text = [[object valueForKey:@"timeStamp"] description];
}

编辑:问题不在于configureCell atIndexPath。如您所见,这些字符串在 XCode 模板中不存在。

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault      reuseIdentifier:cellIdentifier] ;

XCode 模板是否正确?

4

1 回答 1

4

模板代码是正确的。

从 iOS 5.0 开始,可以为单元标识符注册一个 nib。每当表格需要一个单元格并且没有剩余的可重用单元格时,它都会实例化 nib 并自行创建单元格。

如果你这样做dequeueReusableCellWithIdentifier:总是返回一个单元格;您不必自己创建它。

注册 nib 的 API 是:registerNib:forCellReuseIdentifier:.

于 2012-07-29T13:21:00.790 回答