我刚刚开始学习iOS开发。我正在做“Start Developing iOS Apps Today”教程,我坚持使用“添加数据”部分。
在将Table视图设置为使用'Dynamic Prototypes'并将标识符设置为'ListPrototypeCell'之后,我添加了方法'cellForRowAtIndexPath',但是它已经崩溃了这些错误:
应用程序/ Xcode.app /内容/开发商/平台/ iPhoneSimulator.platform /开发商/软件开发工具包/ iPhoneSimulator7.1.sdk /系统/库/ AccessibilityBundles / CertUIFramework.axbundle> (未加载)
2014-08-10 13:35:50.519 ToDoList [8954:60b] ***断言失败 - [UITableView dequeueReusableCellWithIdentifier:forIndexPath:],/ SourceCache / UIKit_Sim / UIKit-2935.137 / UITableView.m:5439
2014-08-10 13:35:50.523 ToDoList [8954:60b] ***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法使用标识符ListPrototypeCell对单元格出列 - 必须注册一个笔尖或一个标识符的类或连接故事板'
中的原型单元格。 。 。
libc ++ abi.dylib:以NSException类型的未捕获异常终止
我一直在完全按照教程,我找不到错误。任何人都可以建议我做错了吗?
代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ListPrototypeCell" forIndexPath:indexPath];
XYZToDoItem *toDoItem = [self.toDoItems objectAtIndex:indexPath.row];
cell.textLabel.text = toDoItem.itemName;
return cell;
}
答案 0 :(得分:4)
使用:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ListPrototypeCell"];
对于你想要的故事板。 如有必要,请跟进:
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ListPrototypeCell"];
}
修改:如果您希望继续使用dequeueReusableCellWithIdentifier:forIndexPath:
,那么在您的控制器初始化中,如果您没有使用故事板,则应根据文档使用registerClass:forCellReuseIdentifier:
。在最新的Xcode版本中,(cell == nil)部分也变得不必要了。