0

UILabelは毎回リフレッシュするのではなく、最後の値のみでリフレッシュします。のすべての値を印刷したいUILabel

for (int i=0; i<4; i++) {
    lblText.text=[NSString stringWithFormat:@"%i",i];
sleep(1.2);
}
4

4 に答える 4

3

値をオーバーライドしています。反復ごとに新しい値を追加する新しい配列を作成する必要があります。

また、メインスレッドでスリープを使用しないでください。それはUIのブロックです

于 2013-03-21T12:05:25.707 に答える
2

ラベルのテキスト間隔を特定の時間に変更したい場合は、なぜ使用しないのですかNSTimer

    _timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(changeText) userInfo:nil repeats:YES];
    _loopTime = 0;


- (void)changeText
{
    lblText.text=[NSString stringWithFormat:@"%i",_loopTime++];
    if(_loopTime >= 3)
    {
        [_timer invalidate];
    }
}
于 2013-03-21T12:08:33.640 に答える
1

sleep()メインスレッドでは使用しないでください。UIがフリーズするからです。performSelector: afterDelay:ラベル内のテキストを更新する関数 (独自の) を呼び出す which を使用します

于 2013-03-21T12:04:15.240 に答える
1

Amit ..よくわかりませんが、私によると、iOS は 2 つのメソッドの実行の間に画面を再描画します。そして、最新の値のみが再描画されます。カウンターを達成するために。次のように、メソッドを正しくしてタイマーを開始する必要があります。

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.2
                                                            target:self
                                                          selector:@selector(counter:)
                                                          userInfo:[NSNumber numberWithInt:i]
                                                           repeats:YES];

これはカウンターメソッドです。

-(void) counter:(NSNumber)count
{

    if(count == 4)
    {
      [timer invalidate]; timer = nil;
    }
    lblText.text=[NSString stringWithFormat:@"%i",count];
    //increment the counter
    i++;
}

お役に立てれば。

于 2013-03-21T12:13:32.323 に答える