2011-09-22 122 views
1

這裏是我的問題: 是否有可能在例如ViewDidLoad中10秒後增加例如「3」的scheduledTimerWithTimeInterval:2。 例如,從這個:更改計時器的時間間隔

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

這樣:

[NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(createNewImage) userInfo:nil repeats:YES]; 

謝謝 對不起我的英語我法語:/

回答

0

使用setFireDate:重新安排計時器。你需要跟蹤伊娃裏的計時器。例如:

@property (nonatomic, readwrite, retain) NSTimer *timer; 

@synthesize timer=timer_; 

- (void)setTimer:(NSTimer *)aTimer { 
    if (timer_ != aTimer) { 
    [aTimer retain]; 
    [timer_ invalidate]; 
    [timer_ release]; 
    timer_ = aTimer; 
    } 

- (void)dealloc { 
    [timer_ invalidate]; 
    [timer_ release]; 
} 

... 

self.timer = [NSTimer scheduledTimerWithTimeInterval:...]; 

... 

self.timer.fireDate = [NSDate dateWithTimeIntervalSinceNow:3]; // reschedule for 3 seconds from now 
+0

對不起,但我真的不明白主機使用setFireDate或如何跟蹤定時器在伊娃。cancan解釋更多請嗎? :) –

1

重新安排定時器遞歸這樣的:

float gap = 0.50; 

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

-(void) onTimer { 
    gap = gap + .05; 
    [NSTimer scheduledTimerWithTimeInterval:gap target:self selector:@selector(onTimer) userInfo:nil repeats:NO]; 
} 

========

或者根據How can I update my NSTimer as I change the value of the time interval

與使它無效:

[myTimer invalidate]; 

然後用新時間創建一個新的。您可能必須先將其設置爲零。

myTimer = nil; 
myTimer = [NSTimer scheduledTimerWithTimeInterval:mySlider.value 
              target:self 
             selector:@selector(myMethod) 
             userInfo:nil 
              repeats:YES];