UILabel仅在NSArray中显示奇数对象

时间:2009-11-26 16:02:54

标签: iphone nsarray uilabel

我有一个定义了objectAtIndex的int,它将它提供给字符串,然后当我修改数组(在这种情况下为它添加一个单词)时,它会在UILabel中显示它,当我有UILabel时通过数组它只显示奇数。我已经完成了一个NSLog,并发现它对字符串只进行了单独处理,但是标签没有显示每一个,它只是第一次执行,然后我修改数组,它只做奇数< / p>

编辑:代码:

- (void) stuff {
    NSArray *indivwords = [sentence componentsSeparatedByString:@" "];
    count = [indivwords count]; //count=int
    if (i < count) {
        NSString *chunk = [indivwords objectAtIndex:i];
        [word setText:chunk];

        NSLog(chunk);
        i++;
    } else {
        word.textColor = [UIColor greenColor];
        [word setText:@"DONE"];
    }
}

所有这些都由NSTimer控制,NSTimer根据滑块值将其设置为关闭。此外,我在IBAction中设置为0

IBAction代码:

word.textColor = [UIColor whiteColor];
[timer invalidate];
i = 0;

speedd = (1/speed.value)*60;



timer = [NSTimer scheduledTimerWithTimeInterval:(speedd) target:self selector:@selector(stuff) userInfo:nil repeats:YES];   

编辑:

我修好了!我做的是在我达到计数后调用它

 -(void)stoptimer
{
[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval:(.01) target:self selector:@selector(empty) userInfo:nil repeats:YES];  
}

空是一个空洞,里面没有任何东西,好吧,我所做的就是添加评论,

//don't look over here, nothing to see here, oh look at that

有人可以关闭它,如果他们想要

2 个答案:

答案 0 :(得分:1)

您说NSTimer的时间间隔由滑块控制。也许您每次更改滑块值时都会启动一个新的计时器实例,因此在更改后您将运行两个计时器。第一个更新标签并递增i。第二个来自第一个,并且发现i的值递增,因此它显示下一个块而不是当前块。

计算你的计时器的实例 - 在计时器回调中对计时器进行NSLog并比较结果 - 可能是你正在触发多个计时器。

答案 1 :(得分:0)

我的猜测是,当你认为应该有一个时,你有两个不同的动作来调用这个方法。我会在那里放一个断点,看看它是否会停在你想象的位置。