1

また、ラベルの値もnullです。

何が起こっているのかよくわかりません。

これらは私のクラス/コードです

@interface CustomEventCell : UITableViewCell{

}

@property (nonatomic, weak) IBOutlet UILabel *participant1label;
@property (nonatomic, weak) IBOutlet UILabel *participant2label;
@property (nonatomic, weak) IBOutlet UILabel *status;

@end

イベントモデルは

@interface Event : NSObject{
}
@property NSNumber *matchId;
@property NSString *participant1, *participant2,
-(id)init;
@end

これはセルを埋めるテーブルビューです

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"EventCell";

    CustomEventCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell == nil)
    {
        cell = [[CustomEventCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // events is a NSMutableArray with Event instances
    Event *event = [events objectAtIndex:indexPath.row];

    cell.participant1label.text = event.participant1;

    return cell;
   }

これが私の設定です

ここに画像の説明を入力してください ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

私は別のuitableviewを持っていて、それが問題なくカスタムに入力されるので、何かが欠けているに違いありません。私はそれらを比較しました、そしてそれらは同一です。私は通常のラベルに戻ろうとさえしました、そしてそれはそれを埋めるでしょう、しかしこのカスタムのものではありません。

編集:

間違ってコピーされたコードを変更しました。

4

1 に答える 1

1

私は、あなたが見たいと思っているものを再現しようとする簡単な小さなテストアプリを書きました。ストーリーボードを使用して、ここで利用できるようにしました。これで原因がわからない場合は、テスト アプリを変更して、表示されている悪い動作を再現することができます。

何が起こっているのかについての私の最善の推測は、セルを初期化するときに、xib のビューに接続されていないということです。

次の場所にブレークポイントを設定してみてください。

cell.participant1label.text = event.participant1;

次のようにして、 cell.participant1label が nil でないことを確認します。

NSLog( @"cell.participant1label: %@", cell.participant1label );

カスタム ラベルが表示されず、cell.participant1label が nil であるという小さなバグがありました。原因は、カスタム テーブル ビュー セルの識別子を「EventCell」に設定していなかったことです。したがって、それを再確認し、コードと XIB の間で識別子が実際に一致することを確認することをお勧めします。

于 2013-03-03T20:50:11.257 に答える