为啥 tableviewcell 没有更新?

Posted

技术标签:

【中文标题】为啥 tableviewcell 没有更新?【英文标题】:Why is tableviewcell not being updated?为什么 tableviewcell 没有更新? 【发布时间】:2011-08-03 08:09:44 【问题描述】:
- (void)viewDidAppear:(BOOL)animated

[super viewDidAppear:animated];
NSString *country=[[NSUserDefaults standardUserDefaults]objectForKey:@"namecountry"];
//url's
NSURL *url = [NSURL URLWithString:@"someurl"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:country forKey:@"c_name"];
[request setRequestMethod:@"POST"];
[request setValidatesSecureCertificate:NO];
[request setDelegate:self];
[request startSynchronous];

NSString *response = [request responseString];
NSLog(@"%@",response);
res=[[response componentsSeparatedByString:@","] retain];
NSLog(@"%@",[res objectAtIndex:18]);
show=[NSString stringWithFormat:@"%@",[res objectAtIndex:18]];
float f=[show floatValue];
show=[NSString stringWithFormat:@"%.2f %%",f];
[show retain];

这是显示信息的第二个选项卡。但是当我单击它时,它有时不会更新,我猜它会随机更新。我希望它每次都更新。请不要告诉我使用 [self .tableView reloadData];当我单击标签栏图标时,我知道它会调用该方法,因此无需重写。此函数是我的 viewDidAppear。 Nslog 日志给出了正确的更新值,所以它为什么不更新表格单元格。

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

UITableViewCell *cell = nil;
if (indexPath.row % 2 == 0) 
    // EVEN
    cell = [tableView dequeueReusableCellWithIdentifier:@"EvenCell"];
    if (cell == nil) 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"EvenCell"] autorelease];
        UIView *bg = [[UIView alloc] initWithFrame:cell.frame];
        UIColor *colour = [[UIColor alloc] initWithRed: (208.0/255.f) green: (231.0/255.f) 
                                                  blue: (241.0/255.f) alpha: 1.0];
        bg.backgroundColor = colour; 
        cell.backgroundView = bg;
        cell.textLabel.backgroundColor = bg.backgroundColor;
        [bg release];
        cell.detailTextLabel.backgroundColor=[UIColor clearColor];
        cell.detailTextLabel.text=show;
    
    cell.textLabel.text = [array objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

 else 
    // ODD

    cell = [tableView dequeueReusableCellWithIdentifier:@"OddCell"];
    if (cell == nil) 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"OddCell"] autorelease];
        UIView *bg = [[UIView alloc] initWithFrame:cell.frame];

        UIColor *colour = [[UIColor alloc] initWithRed: (143.0/255.f) green: (169.0/255.f) 
                                                  blue: (180.0/255.f) alpha: 1.0];
        bg.backgroundColor = colour;
        cell.backgroundView = bg;
        cell.textLabel.backgroundColor = bg.backgroundColor;
        [bg release];
    
    cell.textLabel.text = [array objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;


  
 return cell;
   

这是我创建我写的单元格的函数 cell.detailTextLabel.text=show;所以它可以显示更新值,但正如我所说它是随机更新与否。谁能告诉我问题出在哪里?顺便说一句,我现在不使用奇怪的单元格,这只是概念。

【问题讨论】:

【参考方案1】:

此代码没有保留问题,但是如果您在刷新单元格时遇到问题,如果是我的代码,我会尝试以下操作:

    确认正在调用cellForRowAtIndexPath NSLog()[array objectAtIndex:indexPath.row] 的结果,在您将其分配给标签并确认该值是预期值之前。

【讨论】:

感谢您的检查,知道为什么每次用户在标签栏中选择它时它都不更新吗? 他们是对的,这些值正在进入 cellforrowatindexpath 正确 如果是这样,那么代码没有问题。您需要在应用中的其他地方检查问题。

以上是关于为啥 tableviewcell 没有更新?的主要内容,如果未能解决你的问题,请参考以下文章

为啥顶部的tableViewCell 是灰色的?

为啥 tableviewcell 返回一个 optional("")

iOS 7 - 故事板。为啥无法设置 tableViewCell 选择颜色

为啥我的 UISearchDisplayController 不使用我的自定义 tableViewCell?

为啥我在 swift 中调用 getIndex(cell: TableViewCell1) 函数时出错?

为啥为 UITableViewDiffableDataSource cellProvider 参数返回 nil tableViewCell?