我在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
内,当然它不会在单元格内更新我的标签。
那么如何每隔一秒更新单元格内的标签?
答案 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
方法。
我相信你的小时,分钟和秒都包含更新的值。