2011-07-15 7 views
18

बनाना मैं एक "स्टॉप घड़ी" प्रकार की कार्यक्षमता बनाने की कोशिश कर रहा हूं। मेरे पास एक लेबल है (विलुप्त समय प्रदर्शित करने के लिए) और दो बटन (टाइमर शुरू करें और रोकें)। स्टार्ट और स्टॉप बटन क्रमश: startTimer और stopTimer फ़ंक्शंस को कॉल करते हैं। प्रत्येक सेकेंड टाइमर आग और increaseTimerCount फ़ंक्शन कॉल करता है। मेरे पास एक ivar timerCount भी है जो सेकंड में बीत चुके समय तक रहता है।आईओएस टाइमर

- (void)increaseTimerCount 
{ 
    timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount++]; 
} 

- (IBAction)startTimer 
{ 
    timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(increaseTimerCount) userInfo:nil repeats:YES]; 

} 

- (IBAction)stopTimer 
{ 
    [timer invalidate]; 
    [timer release]; 
} 

समस्या वहाँ एक देरी जब प्रारंभ बटन दबाया जाता है (जो मैं यह सोचते हैं हूँ टाइमर हर बार startTimer कहा जाता है reinitializing की वजह से है) हो रहा है कि है। क्या इसे अमान्य किए बिना टाइमर को रोकने और फिर से शुरू करने का कोई तरीका है और इसे पुनर्निर्माण? या ऐसा करने का एक बेहतर/वैकल्पिक तरीका?

धन्यवाद।

उत्तर

9

आप invalidate का उपयोग किए बिना टाइमर को रोक नहीं सकते हैं। आप क्या कर सकते जोड़ने

[timer fire]; 

आप startTimer में टाइमर बनाने के बाद है।

11

थोड़ा दिनांकित लेकिन अगर किसी को अभी भी रुचि है ...

टाइमर "रोक" नहीं है, लेकिन ठहराव के दौरान बढ़ाने रोक, उदा

- (void)increaseTimerCount 
{ 
    if (!self.paused){ 
     timerCount++ 
    } 

    timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount]; 
}