我正在使用此方法在故事板中返回已创建的单元格 “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下载它
答案 0 :(得分:1)
这里Apple doc说的是:
重要事项:在调用此方法之前,必须使用registerNib:forCellReuseIdentifier:或registerClass:forCellReuseIdentifier:方法注册类或nib文件。
...
在将任何单元格取消之前,请调用此方法或registerNib:forCellReuseIdentifier:方法来告诉表格视图如何创建新单元格。如果指定类型的单元当前不在重用队列中,则表视图使用提供的信息自动创建新的单元对象。
如果您以前使用相同的重用标识符注册了类或nib文件,则在cellClass参数中指定的类将替换旧条目。如果要从指定的重用标识符中取消注册该类,则可以为cellClass指定nil。
所以你应该像这样注册你的课程:
- (void) viewDidLoad {
[super viewDidLoad];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"map"];
}