ios - TableView 中的自定义单元格 : Failed to obtain a cell from its Data Source

标签 ios objective-c uitableview

我使用下面的代码在我的表格 View 中使用两个不同的自定义表格单元格。一切看起来都很好,但是当我运行该应用程序时,出现以下错误:

Failed to obtain a cell from its dataSource FullMessageViewController: 0x103d61c90

知道为什么会这样吗?

FullMessageViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];


   static NSString *ChatTableIdentifier = @"ChatTableViewCell";
   static NSString *ChatTableIdentifier2 = @"SwapDetailTableViewCell";


    UINib *nib = [UINib nibWithNibName: ChatTableIdentifier bundle:nil];
    [self.tableView registerNib:nib forCellReuseIdentifier: ChatTableIdentifier];

    UINib *nib2 = [UINib nibWithNibName: ChatTableIdentifier2 bundle:nil];
    [self.tableView registerNib:nib2 forCellReuseIdentifier: ChatTableIdentifier2];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

   static NSString *ChatTableIdentifier = @"ChatTableViewCell";
   static NSString *ChatTableIdentifier2 = @"SwapDetailTableViewCell";


    NSDictionary *data = [self.messages objectAtIndex:indexPath.row];


   if (![data objectForKey:@"field_swaptime"]) {

     NSLog(@"THIS IS DATA %@", data);



       ChatTableViewCell *cell = (ChatTableViewCell *)[tableView dequeueReusableCellWithIdentifier:ChatTableIdentifier forIndexPath:indexPath];


       NSString *userName = [data objectForKey:@"name"];
       [cell.sendingUser setText:userName];

       NSString *messageBody = [data objectForKey:@"body"];
       [cell.messageDisplayed setText:messageBody];

       NSString *timeReceived = [data objectForKey:@"published at"];
       NSLog(@"Message Received at %@", timeReceived);
       [cell.timeStamp setText:timeReceived];


     return cell;

              }

    else {


        SwapDetailTableViewCell *cell = (SwapDetailTableViewCell *)[tableView dequeueReusableCellWithIdentifier:ChatTableIdentifier2 forIndexPath:indexPath];



        NSString *Time = [data objectForKey:@"field_swaptime"];
        NSLog(@"This is time %@", Time);
        [cell.startTime setText:Time];

        NSString *TimeEnd = [data objectForKey:@"field_endswaptime"];
        [cell.endTime setText:TimeEnd];

        return cell;

    }

    }

最佳答案

由于您正在为您的单元格类型注册一个 nib,因此您需要将 dequeueReusableCellWithIdentifier: 的使用替换为 dequeueReusableCellWithIdentifier:forIndexPath:

例子。变化:

ChatTableViewCell *cell = (ChatTableViewCell *)[tableView dequeueReusableCellWithIdentifier:ChatTableIdentifier];

到:

ChatTableViewCell *cell = (ChatTableViewCell *)[tableView dequeueReusableCellWithIdentifier:ChatTableIdentifier forIndexPath:indexPath];

并且您在 viewDidLoad 中有一些拼写错误。更新如下:

- (void)viewDidLoad {
    [super viewDidLoad];

    static NSString *ChatTableIdentifier = @"ChatTableViewCell";
    static NSString *ChatTableIdentifier2 = @"SwapDetailTableViewCell";

    UINib *nib = [UINib nibWithNibName: ChatTableIdentifier bundle:nil];  
    [self.tableView registerNib:nib forCellReuseIdentifier: ChatTableIdentifier];

    UINib *nib2 = [UINib nibWithNibName: ChatTableIdentifier2 bundle:nil];
    [self.tableView registerNib:nib2 forCellReuseIdentifier: ChatTableIdentifier2];
}

关于ios - TableView 中的自定义单元格 : Failed to obtain a cell from its Data Source,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40315641/

相关文章:

ios - 仅为绘制的特定区域边界获取 UIImage - PaintView

ios - 如何将图像从 AWS S3 加载到 UICollectionView 中?

iphone - Facebook SDK 3.2 的最低 iOS 部署目标?

ios - UITableView Header Override (UIView) 滚动行为异常

uitableview - UIStackview 在 UITableviewCell 中按比例填充采用不正确的框架

ios - 我们的应用程序在通过 Xcode 10 上传的 iOS 9 中崩溃

objective-c - 查询 UITableView 选定的单元格以显示 "Delete"按钮

ios - 在 Objective-C Typhoon 中使用依赖注入(inject)和 JSON 连接对象

ios - UIPopoverController 委托(delegate)在解散时没有被调用

ios - 单击按钮后获取 uitableview 的复选标记值