滚动时隐藏自定义表格视图单元格标签如何解决?

Posted

技术标签:

【中文标题】滚动时隐藏自定义表格视图单元格标签如何解决?【英文标题】:Custom table view cell label hiding when scroll how to solve this? 【发布时间】:2013-10-15 06:51:38 【问题描述】:

“我正在使用自定义单元格类来显示时间,它显示成功,但问题是当我向下滚动表格视图时,然后那个计时器标签没有显示。我使用了这段代码,但是当我向下滚动并再次向上滚动时计时器隐藏的单元格标签,我不知道如何解决这个问题“

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
      
    NSString *CellIdentifier = [NSString stringWithFormat:@"%d_%d",indexPath.section,indexPath.row];
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) 
    cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
[[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil];
    cell=customCell;


return cell;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  
    MyCell *cell = (MyCell *)[tableView cellForRowAtIndexPath:indexPath];

  [cell startTimer:indexPath];
    

//这里是mycell类代码

  - (void) startTimer:(NSIndexPath *)indexPath
   


if (self.timer)

    [self.timer invalidate];


  currentIndexPath=indexPath;
   self.secondsLeft=10;


  self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self    selector:@selector(calculateTimer) userInfo:nil repeats:YES];

  [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];

   [self.timer fire];
 

   - (void)calculateTimer
  

if (self.secondsLeft >0)


    self.secondsLeft --;
    self.timeLbl.text=[NSString stringWithFormat:@"0%d",self.secondsLeft];
    self.showLbl.text=[NSString stringWithFormat:@"0%d",self.secondsLeft];


if (self.secondsLeft==0)

    [self.timer invalidate];
    self.timeLbl.text=@"";


  
   -(void)showTimer
    
   self.timeLbl.text=[NSString stringWithFormat:@"%d",self.secondsLeft];
  NSLog(@"this is self second%d",self.secondsLeft);



【问题讨论】:

【参考方案1】:

这意味着它不刷新在你的方法中包含这些行:-

[tableView reloadData];

【讨论】:

不,这并不意味着滚动计时器标签隐藏 确定一个问题,您从哪里调用此 showTimer 方法?? - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath MyCell *cell = (MyCell *)[tableView cellForRowAtIndexPath:indexPath]; [单元格开始计时器:索引路径]; 【参考方案2】:

试试这个....

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
      
    NSString *CellIdentifier = [NSString stringWithFormat:@"%d_%d",indexPath.section,indexPath.row];
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];

if (cell == nil) 
    cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
[[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil];
    cell=customCell;


将 ReuseIdentifier 设置为 nil。

如果您有任何问题,请告诉我。

更新答案

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:nil];

    if (cell == nil) 

        cell = (CustomCell *)[[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil] objectAtIndex:0];
    
cell.textLabel.text=@"XYZ";

【讨论】:

我使用了你的代码,但同样的事情正在发生,谢谢。 查看我的更新答案。试试看,让我知道。 我不必在这里使用 cell.textLabel.text 我必须在我的 myCell 类中使用它你可以在上面看到我的代码。

以上是关于滚动时隐藏自定义表格视图单元格标签如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

带有自定义表格视图单元格的表格视图在滚动时消失

UITableView 中的自定义单元格使图像在滚动时重叠

滚动会弄乱 UITableView 中的自定义单元格

如何让自定义表格视图单元格扩展到表格末尾?

如何在表格视图中加载不同的自定义单元格

如何固定表格视图中自定义单元格文本字段的标签值?