我有点困惑,需要一些想法。
我想创建一个应用程序,它从0到12计数,然后另一个UILabel变为1.第一个标签从0-12再次开始,然后标签变为2.所以...
我尝试了一些方法来添加NSTimer scheduledTimer并使一些选择器在一定程度上起作用但不符合我的喜好。
我不需要任何代码示例(虽然会很好),但只是一些想法会很好,谢谢。 :)
答案 0 :(得分:2)
您想根据时间或按按钮更改标签吗?
所以你想通过计时器改变标签,所以这就是。
拳头
#define TimeIntervelInSec 1.0
#define countMaxLimitForLower 12
在你的.h文件中制作2个int
int countLower;
int countHigher;
IBOutlet UILabel *lblLowerCount;
IBOutlet UILabel *lblHigherCount;
并且在这里是在.m
- (void)viewDidLoad
{
[super viewDidLoad];
countLower = 0;
countHigher = 0;
[NSTimer scheduledTimerWithTimeInterval:TimeIntervelInSec
target:self
selector:@selector(timerChanged)
userInfo:nil
repeats:YES ];
}
-(void)timerChanged
{
if (countLower >= countMaxLimitForLower)
{
countHigher++;
countLower = 0;
}
else
{
countLower ++;
}
lblLowerCount.text = [NSString stringWithFormat:@"%d",countLower];
lblHigherCount.text = [NSString stringWithFormat:@"%d",countHigher];
}
答案 1 :(得分:1)
@YashpalJavia走在正确的轨道上,但建议的代码有几个问题:
从该代码开始:
创建一个实例变量count,它将计算自计时器启动以来的总秒数。
- (void) startTimer;
{
count = 0;
[NSTimer scheduledTimerWithTimeInterval:TimeIntervelInSec
target:self
selector:@selector(timerChanged:)
userInfo:nil
repeats:YES ];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self startTimer];
}
-(void)timerChanged: (NSTimer *) timer;
{
const int units = 12;
count++;
int countLower;
int countHigher;
countLower = count % units; //Use the modulo operator to get a value from 0 - 11
countUpper = countLower / units;
countLowerLabel.text = [NSString stringWithFormat: @"%d", countLower);
countUpperLabel.text = [NSString stringWithFormat: @"%d", countUpper);
}
上面的代码将使较低的值从0变为11,然后递增较高的值并将较低的值重置为0.如果您确实希望较低的值从0到12(13个可能的值),那么更改单位到13,但我敢打赌,这不是你想要的。
答案 2 :(得分:0)
如果你反击每秒增加,你可以尝试这样的事情。
int count;
count=0;
[self performSelector:@selector(updateMyLabel:) withObject:nil afterDelay:12.0];
-(void)updateMyLabel:(id)sender
{
count++;
NSString *counterString = [NSString stringWithFormat:@"%d", count];
secondLabel.text=counterString;
}
我希望它对你有用