1

我有一个表格,我想用自定义 tableViewCells 填充它,以便为用户提供有关订单的信息。问题是表格视图显示了单元格,但没有用我需要的信息填充它们。当我插入断点时,我发现无论我做什么,单元格都是空的。这是我的 cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    OrderOverViewCell *cell = (OrderOverViewCell *)[tableView dequeueReusableCellWithIdentifier: @"orderOverviewCell"];

    OrderClass *orderClass = nil;
    if (filteredArray == nil) {
        if (sortedArray.count >0) {
        orderClass = sortedArray[indexPath.row];
        }
    }
    else if (filteredArray != nil) {
        orderClass = filteredArray[indexPath.row];
    }

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd/MM/yyyy HH:mm"];
    NSString *orderDate = [dateFormatter stringFromDate:orderClass.orderDate];

    cell.orderTitle.text = [NSString stringWithFormat:@"%@%@ %@",orderClass.companyName,@",", orderDate];
    cell.orderDetail.text = [NSString stringWithFormat:@"%@ %@ %@ %@.", @"order nummer:",orderClass.orderNumber, @"betaling:", orderClass.orderPaymentType];


    if ([orderClass.orderDelivery isEqualToString:@"Bezorgen"]) {
        cell.orderDelivery.text = [NSString stringWithFormat:@"Levering: Bezorgen op %@, %@, %@", orderClass.orderAdress, orderClass.orderAdressZip, orderClass.orderCity];
    }

    if ([orderClass.orderDelivery isEqualToString:@"Afhalen"]) {
        cell.orderDelivery.text = [NSString stringWithFormat:@"Levering: Afhalen op ingestelde datum en tijd."];
    }

    cell.orderIndication.image = nil;
    if ([orderClass.preparing isEqualToString:@"1"]) {
        if ([orderClass.ready isEqualToString:@"1"] ){
            if ([orderClass.delivered isEqualToString:@"1"]){
                cell.orderIndication.image = [UIImage imageNamed:@"order_3.png"];
            }
            else {
                cell.orderIndication.image = [UIImage imageNamed:@"order_2.png"];
            }
        }
        else {
            cell.orderIndication.image = [UIImage imageNamed:@"order_1.png"];
        }
    }
    cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"orderCellBG.png"]];

    return cell;
}

有人知道我做错了什么吗?任何帮助将不胜感激。

4

4 回答 4

0

在 viewDidLoad 中添加它以指示要使用的单元格:

UINib *const cell = [UINib nibWithNibName:@"nibName" bundle:[NSBundle mainBundle]];
[_tableView registerNib:cell forCellReuseIdentifier:@"orderOverviewCell"];
于 2013-09-12T14:17:03.253 回答
0

如果您将自定义单元格定义为 aPrototype Cell内部Storyboard,请确保您已分配正确的标识符 ( orderOverviewCell)

在此处输入图像描述

根据Apple 开发人员文档

因为原型单元是在故事板中定义的,所以 dequeueReusableCellWithIdentifier: 方法总是返回一个有效的单元。您无需根据 nil 检查返回值并手动创建单元格。

于 2013-09-12T14:19:51.790 回答
0

几件事要检查!如果您正在使用 Storyboards 并且您的单元格是包含在 UITableView 而不是单独的 Nib 文件中的原型单元格,那么请确保唯一标识符是正确的。

大小写和拼写都很重要,因此请确保在单击单元格时在代码和情节提要中正确命名了“orderOverviewCell”。

OrderOverViewCell *cell = (OrderOverViewCell *)[tableView dequeueReusableCellWithIdentifier: @"orderOverviewCell"];

上面的代码将实例化单元格并返回一个有效的单元格,因此您无需检查 nil 或任何内容。我还假设您使用的是 UITableViewController 而不是带有 UITableView 作为插座的 ViewController。

于 2013-09-12T15:06:01.367 回答
0

将其更改为此解决了它:

OrderOverViewCell *cell = (OrderOverViewCell *)[self.tableView dequeueReusableCellWithIdentifier: @"orderOverviewCell"];
于 2013-09-21T15:52:45.757 回答