objective-c – NSTimer问题

objective-c – NSTimer问题,第1张

概述所以我试图建立一个基本的计时器,但我失败了.基本上我想要的是在用户点击按钮时启动60秒计时器,并用剩余时间更新标签(如倒计时).我创建了我的标签和按钮并将它们连接到IB中.接下来,我为按钮创建了一个IBAction.现在,当我尝试根据计时器更新标签时,我的应用程序搞砸了.这是我的代码: NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 1 所以我试图建立一个基本的计时器,但我失败了.基本上我想要的是在用户点击按钮时启动60秒计时器,并用剩余时间更新标签(如倒计时).我创建了我的标签和按钮并将它们连接到IB中.接下来,我为按钮创建了一个IBAction.现在,当我尝试根据计时器更新标签时,我的应用程序搞砸了.这是我的代码:

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问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001772.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存