我想在“UITableView”上显示数据列表。
当我运行代码时,我收到以下错误:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:
'unable to dequeue a cell with identifier Cell - must register a nib or a class for the
identifier or connect a prototype cell in a storyboard'
当我运行下面的代码时,我得到上面给出的错误。该错误被抛出 cellForRowAtIndexPath函数。我该如何解决这个错误?
@interface TheViewController ()
@property (strong, nonatomic) NSMutableArray *myTData;
@property (weak, nonatomic) IBOutlet UITableView *tableViewOutlet;
@end
@implementation TheViewController
- (void)viewDidLoad
{
self.tableViewOutlet.delegate = self;
self.tableViewOutlet.dataSource = self;
self.tableViewOutlet.scrollEnabled = YES;
self.myData = [[NSMutableArray alloc] initWithObjects:@"obj1", @"obj2", nil];
[self.tableViewOutlet reloadData];
[super viewDidLoad];
}
#pragma mark UITableViewDataSource methods
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section {
return myData.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"hede"];
}
[cell.textLabel setText: [myData objectAtIndex:indexPath.row]];
[cell.detailTextLabel setText:@"hede hodo"];
//
// Configure the cell..
return cell;
}
#pragma mark UITableViewDelegate methods
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
// Return the number of sections.
return 1;
}
@end
答案 0 :(得分:1)
例外正是它所说的。
在iOS 5中,您可以调用[tableView dequeueReusableCellWithIdentifier:CellIdentifier]
,如果没有返回,则创建一个。新调用-dequeueReusableCellWithIdentifier:forIndexPath:
应该已注册NIB或单元类,然后它将始终成功。
您应该致电
- (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier
或
- (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier
在-viewDidLoad
方法中。
答案 1 :(得分:0)
在故事板中,选择原型单元格,转到检查器并为单元格提供标识符“单元格”或任何您想要的内容,只要您在此处具有相同内容:static NSString *CellIdentifier = @"Cell";