在iOS 6模拟器上运行良好。在iOS 5.1模拟器上,当我第一次运行它时,由于以下异常而崩溃。
*终止应用程序由于未捕获异常'NSInternalInconsistencyException',原因:' UITableView dataSource必须返回一个单元格从tableView:cellForRowAtIndexPath:'
这是我的代码
- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"Cell";
cell = [theTableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
[[NSBundle mainBundle] loadNibNamed:@"listTableCell" owner:self options:NULL];
}
else{
[[NSBundle mainBundle] loadNibNamed:@"listTableCell_iPad" owner:self options:NULL];
}
cell = nibLoadCellForListDetails;
}
return cell;
}
在listTableCell中。xib我将文件的所有者设置为表视图控制器。我在表视图控制器中正确地创建了一个outlet作为nibLoadCellForListDetails
看起来实际上没有创建单元格。添加:
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
代替:
cell = [theTableView dequeueReusableCellWithIdentifier:cellIdentifier];
试一下
if (cell == nil) {
NSArray *nib;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
nib = [[NSBundle mainBundle] loadNibNamed:@"listTableCell" owner:self options:NULL];
}
else{
nib = [[NSBundle mainBundle] loadNibNamed:@"listTableCell_iPad" owner:self options:NULL];
}
cell = [nib objectAtIndex:0];
}