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

    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(5, 5, 300, 20)];
        [cell.contentView addSubview:titleLabel];
        titleLabel.tag = 0011;
    }
    else 
    {
        titleLabel = (UILabel *)[cell.contentView viewWithTag:0011];
    }

    // Configure the cell...
    NSMutableString *title = [NSMutableString stringWithString:@"Customer: "];
    [title appendString:[titles objectAtIndex:indexPath.row]];
    titleLabel.text = title.copy;
    titleLabel.backgroundColor = [UIColor clearColor];
    titleLabel.textAlignment = UITextAlignmentLeft;
    titleLabel.font = [UIFont systemFontOfSize:18.0];

私のセルは決してnilではなく、私のセルは生成されますが、私のtitleLabelは決して割り当てられませんでした。これがどのように可能かわかりません。if 状態は決して真ではありません。これは、初めて生成されるセルの場合ですが、タイトルラベルなしでセルが本来あるべきように作成されます

4

1 に答える 1

5

iOS 5 (またはそれ以降) と Storyboards を使用しているかのように聞こえます。

iOS 5 (またはそれ以降) では、ストーリーボードと TableView コントローラーを使用している場合、dequeueReusableCellWithIdentifier:メソッドはセルを返すことが保証されます (ストーリーボードで指定された識別子を持つセルを定義している場合)。

この場合の解決策は、ストーリーボードにカスタム テーブル セルを完全に作成することです。ストーリーボードのテーブル ビューに移動し、 を選択Content:Dynamic Prototypesして作成しPrototype Cells:1ます。次に、セルをグラフィカルにレイアウトして、希望どおりにします。セルをクリックして設定しIdentifier:Cell2ます。実行時にラベルを作成したり、ラベルが nil かどうかを確認したりする必要はなくなりました。設定したラベルを参照する方法を含む完全な詳細は、iOS 5 リリース ノート (以下のリンク) または Web 上の多くのチュートリアルにあります。

iOS 5 リリース ノートのセクションを参照してくださいテーブル ビューの構成

于 2012-06-14T22:34:26.467 に答える