0

我正在使用此方法返回故事板“dequeueReusableCellWithIdentifier”中已创建的单元格,这是代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    switch ( indexPath.row )
    {
        case 0:
            CellIdentifier = @"map";
            break;

        case 1:
            CellIdentifier = @"blue";
            break;

        case 2:
            CellIdentifier = @"red";
            break;
    }

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


    return cell;
}

但我有这个错误:'NSInternalInconsistencyException',原因:'无法使用标识符映射出列单元格 - 必须为标识符注册一个 nib 或一个类或连接故事板中的原型单元格

注意:我在情节提要中添加了标识符,因为它在这里但它不起作用,另一个重要的事情是:这个项目正在运行,但现在它停止了!!!!我从 appcoda.com 下载它

4

1 回答 1

1

这是Apple doc所说的:

重要提示:在调用此方法之前,您必须使用 registerNib:forCellReuseIdentifier: 或 registerClass:forCellReuseIdentifier: 方法注册类或 nib 文件。

…</p>

在将任何单元格出列之前,调用此方法或 registerNib:forCellReuseIdentifier: 方法来告诉表格视图如何创建新单元格。如果指定类型的单元格当前不在重用队列中,则表格视图使用提供的信息自动创建新的单元格对象。

如果您之前使用相同的重用标识符注册了类或 nib 文件,则您在 cellClass 参数中指定的类将替换旧条目。如果你想从指定的重用标识符中注销类,你可以为 cellClass 指定 nil。

所以你应该像这样注册你的课程:

- (void) viewDidLoad {
    [super viewDidLoad];

    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"map"];
}
于 2013-08-05T11:35:37.283 回答