iOS 5.1模拟器中,UITableView数据源必须从tableView:cellForRowAtIndexPath



在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];
}

相关内容

  • 没有找到相关文章

最新更新