如何一次向一个数字加一个数字?

时间:2014-03-01 01:45:01

标签: ios objective-c counter

我有一个iOS应用程序,每次用户点击他或她获得10分。我有一个标签,显示每次获得积分时更新的用户点数。这很难说,但我的问题是如何让这个计数器显示每个被添加的数字?

示例:

我现在拥有的东西: 用户点击。计数器显示10.用户再次点击。柜台显示20.依旧等等

我想做什么: 用户点击。计数器在一秒内完成1,2,3,4,5,6,7,8,9,10。

希望你能理解我的问题!

提前致谢!

2 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

int count = ... // the current count
for (int i = 1; i <= 10; i++) {
    dispatch_async(dispatch_get_main_queue(), ^{
        someLabel.text = [NSString stringWithFormat:@"%d", count + i];
    });
}
count += 10;

但这可能会太快改变计数。每次更新之间几乎没有延迟。

以下大约需要1秒来更新数字:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, timeout * NSEC_PER_SEC), dispatch_get_local_queue(), ^{
int count = ... // the current count
for (int i = 1; i <= 10; i++) {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, i * 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
        someLabel.text = [NSString stringWithFormat:@"%d", count + i];
    });
}
count += 10;

答案 1 :(得分:0)

从显示0的标签开始,这应该可以,

- (IBAction)incrementLabel:(id)sender {
    self.label.text = [NSString stringWithFormat:@"%d", self.label.text.integerValue + 1];
    [self performSelector:@selector(incrementLabel:) withObject:self afterDelay:.1];
    if (self.label.text.integerValue % 10 == 0) [NSObject cancelPreviousPerformRequestsWithTarget:self];
}