2017-01-31 40 views
0

加載我要顯示用戶該值最初是0比它幾秒鐘值時視圖的目標C

曾爲完成後增加至1比2比3序列重複由我 我在寫這個的viewDidLoad代碼,但它在打印標籤直接99,但我想根據您的需求,您需要使用NSTimer用於更新您的標籤,以顯示用戶不斷變化的值從0到99

for(int i=0;i<100;i++){ 
     _totalEffort.text=[NSString stringWithFormat:@"%d",i]; 
} 
+2

使用NSTimer並在一定的時間間隔後更新標籤中的值。 – kb920

+0

對(INT I = 0; I <100;我++){ [的NSTimer scheduledTimerWithTimeInterval:1000 目標:自 選擇器:@selector(個體) USERINFO:無 重複:NO]; _totalEffort.text = [NSString stringWithFormat:@「%d」,i]; } **不適合我** –

+0

請參閱http://stackoverflow.com/questions/17731840/how-to-add-a-delay-to-a-loop –

回答

0

進展

步驟1:啓動計時器在viewDidLoad()與進步價值0:在@interface

@interface BUViewController: UIViewController { 
    NSTimer *timerCount; 
    int progress; 
} 

步驟2創建2個變量。

progress = 0; 
timerCount = [NSTimer timerWithTimeInterval:0.5 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES]; 

步驟3:創建方法與計時器更新標籤文本在它的檢查進度值,雖然其覆蓋面100停止計時器。

-(void)updateLable{ 

    if (progress<100) { 
     lblProgress.text = [NSString stringWithFormat:@"%d",progress]; 
     progress++; 
    }else{ 
     [timerCount invalidate]; 
     timerCount = nil; 
    } 

} 

希望這可以幫助您實現預期產出。

0

爲此,您可以使用NSTimer您需要更新其selector方法中的值UILabel值。您可以使用此代碼。

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    self.time = 0; 
    _labelTimer.text [email protected]"0"; 
    [self startTimer]; 
} 
- (void)startTimer { 
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES]; 
    [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode]; 
    } 

- (void)timerAction:(NSTimer *)timer { 
    self.time++; 
    if (self.time == 100) 
    { 
     [self stopTimer]; 
    } 
     _labelTimer.text = [NSString stringWithFormat:@"%d",self.time]; 

} 

-(void)stopTimer{ 
    [self.timer invalidate]; 
    self.timer = nil; 
} 
2

我認爲這將有助於你:

@interface ViewController(){ 
     int i; 
     NSTimer *myTimer; 
} 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    myTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 
             target:self 
             selector:@selector(setData) 
             userInfo:nil 
             repeats:YES]; 

     i = 0; 

    } 

    -(void)setData{ 
     _totalEffort.text=[NSString stringWithFormat:@"%d",i]; 
     i = i + 1; 
     if(i == 100){ 
      [myTimer invalidate]; 
      myTimer = nil; 
     } 
    } 
+0

感謝它爲我工作(y ) –

0

這裏是你的問題的代碼。希望它可以幫助你。

- (void)viewDidLoad 
{ 

[super viewDidLoad]; 

    counter = 0; 

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

} 

-(void)updateLabel 
{ 

    for (int i = counter; i<counter+1; i++) 
    { 

     _totalEffort.text=[NSString stringWithFormat:@"%d",i]; 
    } 
    counter++; 

    if (counter ==101) 
    { 
     [t invalidate]; 
    } 

} 
0

您正在使用您的循環阻止運行循環。你只需要在每次迭代中恢復它。

for(int i=0;i<100;i++){ 
     [email protected](i).stringValue; 
     [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; 

}