0

ここで奇妙な問題の種類:

UITableViewCellたくさんのラベルとイメージビューを備えたカスタムペン先があります。ファイルの所有者をUITableViewDelegate/Datasourceに設定し、カスタム クラスを nib ファイルに設定し、次のように VC にロードしました。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    static NSString *CellIdentifier = @"BuildCell";
    BuildCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle]loadNibNamed:@"BuildCell" owner:self options:nil];
        cell = [topLevelObjects objectAtIndex:0];
    }
    ...
    return cell
}

奇妙なのは、cellIdentifier をストーリーボードの ID とは異なる ID に設定すると、すべてが正常に読み込まれることです (しかし、これはセグエを適切に動作させることができないため、問題です)。セル識別子を一致するように設定すると、一部のプロパティのみが正しく機能します。これはどうやってできるの??

の完全な実装は次のcellForRowAtIndexPathとおりです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    static NSString *CellIdentifier = @"BuildCell";
    BuildCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle]loadNibNamed:@"BuildCell" owner:self options:nil];
        cell = [topLevelObjects objectAtIndex:0];
    }

    Build *build = [self.builds objectAtIndex:indexPath.row];

    //cell.school.text = build.school;
    cell.device.text = build.sdk;
    cell.buildType.text = build.config;
    cell.creator.text = [NSString stringWithFormat:@"By %@", build.creator];
    cell.time.text = build.dateCreated;

    switch (build.buildStatus) {
        case kSuccess:
            cell.imageView.image = [UIImage imageNamed:@"greensmall.png"];
            break;
        case kInProgress:
            cell.imageView.image = [UIImage imageNamed:@"yellowsmall.png"];
            break;
        default:
            cell.imageView.image = [UIImage imageNamed:@"redsmall.png"];
            break;
    }        

    return cell;        
}

正しく読み込まれる唯一の部分は imageView です。どのラベルも表示されません。何か案は?

4

0 に答える 0