NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 1 target: self selector:@selector(updateLabeldisplay) userInfo: nil repeats:YES];
我还有一个updateLabeldisplay函数,用于确定计时器运行的次数,然后从60减去该数字,并在倒计时标签中显示该数字.谁能告诉我我做错了什么?
解决方法 好的,对于初学者来说,如果你还没有,请检查一下: Official Apple Docs about Using Timers根据您的描述,您可能希望代码看起来像这样.我对行为做了一些假设,但你可以适应品味.
此示例假定您要保留对计时器的引用,以便您可以暂停它或其他内容.如果不是这种情况,您可以修改handleTimerTick方法,以便将NSTimer *作为参数,并在计时器到期后使用它来使计时器失效.
@interface MyController : UIVIEwController{ UILabel * theLabel; @private NSTimer * countdownTimer; NSUInteger remainingTicks;}@property (nonatomic,retain) IBOutlet UILabel * theLabel;-(IBAction)doCountdown: (ID)sender;-(voID)handleTimerTick;-(voID)updateLabel;@end@implementation MyController@synthesize theLabel;// { your own lifecycle code here.... }-(IBAction)doCountdown: (ID)sender{ if (countdownTimer) return; remainingTicks = 60; [self updateLabel]; countdownTimer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target: self selector: @selector(handleTimerTick) userInfo: nil repeats: YES];}-(voID)handleTimerTick{ remainingTicks--; [self updateLabel]; if (remainingTicks <= 0) { [countdownTimer invalIDate]; countdownTimer = nil; }}-(voID)updateLabel{ theLabel.text = [[NSNumber numberWithUnsignedInt: remainingTicks] stringValue];}@end总结
以上是内存溢出为你收集整理的objective-c – NSTimer问题全部内容,希望文章能够帮你解决objective-c – NSTimer问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)