如何使用每N秒更改NSString的值?

时间:2011-11-08 03:55:04

标签: objective-c cocoa nsstring nsarray nstimer

我有这段代码每五秒更改NSString中的数字。

如何让数字在循环中运行?它现在从1到19运行,并在最后一个(19)停止,并且行上有一个SIGABRT:label.text = ...

在第一个计时器触发之前,如何从显示的第一个数字(0)开始?

以下是代码:

-(IBAction) rotate3

{


    NSString *number = [self.dayArray description];

    NSArray *array = [[NSArray alloc] initWithObjects: @"0", @"1", @"2",..., @"19",nil];

    number =  @"0" ;
    numberCount++ ;


    self.dayArray = array;
    [array release];


    label.text = [NSString stringWithFormat:@"Day: %@ ", [dayArray objectAtIndex   :numberCount ]];


}

//and the timer

- (void)viewDidLoad

{

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

}

5 个答案:

答案 0 :(得分:1)

以下是我的答案:

1)我认为,在最后一个(19),numberCount是20(numberCount ++;)。 2)只需在安排定时器之前设置值。

答案 1 :(得分:0)

将此添加到您的界面中的.h文件中(即,如果它尚未存在)

{
    NSInteger numberCount
}

然后在viewDidLoad方法中,初始化numberCount和标签:

numberCount = 0;
label.text = @"0";

在你的时间方法中,替换:

numberCount++

if(numberCount++ > 19)
    numberCount = 0;

用于什么是“编号”NSString,b.t.w。?

答案 2 :(得分:0)

为什么有dayArray? 为什么不喜欢

label.text = [NSString stringWithFormat:@"Day: %d", numberCount++];
if (numberCount>19) numberCount = 0;

我不知道你有什么数字计数初始化它应该是-1并且也重新初始化为-1。如果你希望通过“Day:0”迭代......“Day:19” 目前尚不清楚。

答案 3 :(得分:0)

您可以将 - (void)viewDidLoad计时器更改为不重复

timer=[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(rotate3 )userInfo:nil repeats:NO];

然后,如果您仍想在5秒后更改文本,请在rotate3方法中有条件地再次设置它。

答案 4 :(得分:0)

试试这个:

#pragma mark - timer callback

-(IBAction)rotate3
{
    [label1 setText:[dayArray objectAtIndex:numberCount]];
    numberCount++;
    if (numberCount >= [dayArray count])
        numberCount = 0;
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    dayArray = [[NSArray alloc] initWithObjects:@"0",@"1",@"2",@"3", nil];
    [label1 setText:[dayArray objectAtIndex:0]];
    numberCount = 1;
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(rotate3) userInfo:nil repeats:YES];
    // Do any additional setup after loading the view, typically from a nib.
}