0

前もって:私は初心者です。

UITableViewCell の textLabel オブジェクトにテキストを設定するメソッドがあります。関連するコード スニペットは次のとおりです。

NSLog(@"BEFORE .textLabel.text: %@", _addWarmupActivityTableViewCell.textLabel.text);
NSLog(@"BEFORE activity.name: %@", theSelectedActivityToDisplayAndSave.name);
_addWarmupActivityTableViewCell.textLabel.text = theSelectedActivityToDisplayAndSave.name;
NSLog(@"AFTER .textLabel.text: %@", _addWarmupActivityTableViewCell.textLabel.text);

初めて設定すると、うまくいきます。このロギングで確認できます。

[12231:c07] BEFORE .textLabel.text: (null)
[12231:c07] BEFORE activity.name: Animal Movements
[12231:c07] AFTER .textLabel.text: Animal Movements

その後、それ以降呼び出されると、次のログに示されているように null が返されます。

[12231:c07] BEFORE .textLabel.text: (null)
[12231:c07] BEFORE activity.name: Animal Movements
[12231:c07] AFTER .textLabel.text: (null)

私は少し困惑していることを認めなければなりません。textLabel が変更されるたびに、実際に新しい UILabel オブジェクトが作成されるという他の投稿を読みました。しかし、私には、それを設定しようとした後、なぜそれが(null)1行なのかまだ説明されていませんか?

正しい方向へのポインタは大歓迎です。

乾杯。

4

1 に答える 1

0

セルを割り当て/デキューするコードを表示していないため、言うのは難しいです-リストしたものの前にどこかに割り当てていると思います。

次のようになります。

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (!cell)
    {
        cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }
    cell.textLabel.text = theSelectedActivityToDisplayAndSave.name; // wherever you get this from
    return cell;
}

それはあなたが使用している方法に似ていますか?

私が見ているのは、セルが適切に割り当てられているかどうかだと思います。

于 2013-06-12T05:46:13.517 に答える