2012-05-13 17 views
2

更新したいUILabelがあります。これは、Ctrlキーを押しながらクリックしてXIBファイルを追加することでクラスに追加されました。私は短い遅延を待ってからラベルのテキストを更新しようとしています。今のところ、以下のコードを除いては何も進んでいません。私がこれを実行すると、シミュレータはすぐに空白になり、最後に更新されたテキストに私をまっすぐに連れて行きます。それは100ちょうど200を示していません。UILabelの更新方法

ラベルはどのように更新するのですか。最終的に、ラベル内でソートのタイマーを持つようにしようとしています。ファイルヘッダするXIBからリンク

レーベル:Implmentationで

@property (strong, nonatomic) IBOutlet UILabel *timeRemainingLabel; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.timeRemainingLabel.text = @"100"; 
    sleep(1); 
    self.timeRemainingLabel.text = @"200";  
} 
  • それは合成されています。 (アプリを実行している)

  • XCodeの4.3.2はMac OSX 10.7.3、iOSシミュレータ5.1、iOSの5

答えて

3

に問題あなたの実装は、sleepの中で実行シーケンスがメソッドを離れることがないということです。これは、UIサブシステムが"200"に設定するコマンドを取得する前に、ラベルを"100"値に更新する機会を得ることがないため、問題です。

-(void) updateLabel { 
    NSInteger next = [timeRemainingLabel.text integerValue]-1; 
    timeRemainingLabel.text = [NSString stringWithFormat:@"%d", next]; 
} 
+0

答えをありがとう。それはそれをするように見えました。 – sri

3

あなたが停止され、ここでsleepを使用しているので、それはあなたにこのような100を表示することはありませんあなたのプログラムの実行とすぐにsleepの1秒後にテキストを更新しています。これを行うには、NSTimerを使用します。

は、このようなあなたの上記のコードを変更し

:ビューがロードされ、それが起こるとき、ラベルtimeRemainingLabelのテキストは@"200"ですしていないまで

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.timeRemainingLabel.text = @"100"; 

    [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:NO]; 

} 

- (void) updateLabel 
{ 
    self.timeRemainingLabel.text = @"200"; 
} 
+0

ありがとう:

timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats: YES]; 

は、その後、あなたのupdateLabelメソッドのコードを記述する必要があります。

は、まず、あなたがこのように、あなたのinitメソッドでタイマーを作成する必要があり、これを正しく行うために、答えるために。それを考えなかった。 – sri

1

あなたのビューが表示されません。だから、あなたはテキストが変わるのを見ない。代わりにこれを行うと、セレクタで、ラベルにテキストを割り当てるためにNSTimerを使用します。

timer = [NSTimer scheduledTimerWithTimeInterval:timeInSeconds target:self selector:@selector(updateText) userInfo:nil repeats: YES/NO]; 

し、あなたの更新方法では、あなたの要件ごとに最新のテキストを設定します。

-(void) updateText { 
    self.timeRemainingLabel.text = latestTextForLabel; 
} 
+0

助けてくれてありがとう。私は今それを得た:) – sri

関連する問題