0

I am stuck at a simple task, I have uilabel on my uiviewcontroller's interface file. I want to update that label via some methods. It doesn't update the label.

enter image description here

.h
UIViewController
{
  UILabel *pictureNameLabel;
}
@property (nonatomic, strong) IBOutlet UILabel *pictureNameLabel;

.m
@synthesize pictureNameLabel=_pictureNameLabel;
- (void)viewDidLoad
{
        _pictureNameLabel = [[UILabel alloc] init];
        _pictureNameLabel.textColor=[UIColor blackColor];
        _pictureNameLabel.text=@"Try";
}

How can I fix that issue?

4

3 に答える 3

3

ラベルを割り当てる必要はありません。それはすでに生きていて、ペン先から目覚めます。

.h
UIViewController
{
  //UILabel *pictureNameLabel;
}
@property (nonatomic, strong) IBOutlet UILabel *pictureNameLabel;

.m
@synthesize pictureNameLabel=_pictureNameLabel;
- (void)viewDidLoad
{
        //_pictureNameLabel = [[UILabel alloc] init];
        _pictureNameLabel.textColor=[UIColor blackColor];
        _pictureNameLabel.text=@"Try";
}
于 2013-01-16T14:47:04.640 に答える
2

あなたの直接の問題は次の行です:

_pictureNameLabel = [[UILabel alloc] init];

-ViewDidLoad新しい変数を作成し、pictureNameLabelプロパティがそれを指すようにしているため、Interface Builder で作成されたものへの参照が失われます。その行を削除すると、すべてが正常に機能するはずです。

Interface Builder を使用して要素を作成した場合は、適切な場所でビューに追加するだけでなく、自分で割り当てて初期化する必要はありません。これは自動的に行われ、プロパティは既に を指すように設定されています。それ。新しいビューを手動で作成する場合は、それを行う必要があります...ただし、ビュー階層のどこかにサブビューとして追加する必要もあります。

問題とは関係ありませんが、という名前の変数も作成しましたUILabel *pictureNameLabel;。この変数を合成プロパティのバッキング変数として作成したと思いますpictureNameLabelが、それを に合成しました_pictureNameLabel。つまり、2 つの変数_pictureNameLabelpictureNameLabel. これはほぼ間違いなく間違いです。の手動定義を削除するか、pictureNameLabel実際に同じ名前のプロパティとは別に使用する場合は別の名前に変更する必要があります。それを持っていると、混乱やバグが発生する可能性があります。

于 2013-01-16T15:03:38.467 に答える
-1

ラベルは xib ファイルに既に存在し、インターフェイス bulider で textcolor、text を設定できます。

于 2013-01-16T14:50:00.463 に答える