如何在UITableViewCell中更新标签计时器?

时间:2012-08-07 06:02:12

标签: iphone ios5 xcode4.3

我在UITableViewCell内有一个标签计时器,使用此代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [[UITableViewCell alloc]init];

    timeLabel = [[UILabel alloc]initWithFrame:CGRectMake(55, 26, 280, 25)];
    timeLabel.text = [timeArray objectAtIndex:indexPath.row];
    timeLabel.backgroundColor = [UIColor clearColor];
    timeLabel.textColor = [UIColor blackColor];

    [cell.contentView addSubview:timeLabel];
    return cell;
    NSLog(@"Title %@, time %@, second %@, time %i, tag %d", titleArray, timeArray, secondArray, time, button.tag);
}

我有一个使用此代码按钮触发的计时器

- (void)onoffBtn:(id)sender
{
    countdownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerElapsed:) userInfo:nil repeats:YES];
}

- (void) timerElapsed:(id)timer
{
    if (time == 0)
    {
        [countdownTimer invalidate];
    }
    // this part only code for counting down timer
    NSLog(@"%d:%d:%d", hour , minute, second);
}

如果我将timeLabel.text = [NSString stringWithFormat:@"%d:%d:%d", hour , minute, second];放在timerElapsed内,当然它不会在单元格内更新我的标签。

那么如何每隔一秒更新单元格内的标签?

2 个答案:

答案 0 :(得分:2)

您可以使用以下方式更新表格:

[theTable reloadData]

确保在重建表格的单元格时重新加载然后获取正确的值

编辑: 别忘了像这样回收细胞...

        static NSString *kDisplayCell_ID = @"DisplayCellID";
        cell = [self.tableView dequeueReusableCellWithIdentifier:kDisplayCell_ID];
        if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kDisplayCell_ID];
        }
         ....

您可能想查看

的方式
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

需要实施

答案 1 :(得分:1)

timeLabel.text = [NSString stringWithFormat:@"%d:%d:%d", hour , minute, second];放在cellForRowAtIndexPath内,并在timerElapsed中调用tableview的reloadData方法。

我相信你的小时,分​​钟和秒都包含更新的值。