“重新加载表\\”时,单元格的字符串文本未更新

|| 仅当我在表的子表中编辑数据时,才会更新单元格的字符串文本(TDBadgedCell)。 如果我从其他标签编辑相同的数据,然后返回此表,则在重新启动该应用程序之前,字符串不会更新。 我也有这段代码:
- (void)viewWillAppear:(BOOL)animated
{
    [self refreshFetchedResultsController];
    [self.logTableView reloadData];
}
编辑:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @\"Cell\";
    TDBadgedCell *cell = [[[TDBadgedCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
    [self configureCell:cell atIndexPath:indexPath];
    return cell;
}

- (void)configureCell:(TDBadgedCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
    cell.textLabel.textColor = [UIColor blackColor];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.textLabel.text = [logArray objectAtIndex:indexPath.row];
    cell.backgroundColor = [UIColor clearColor];
    cell.imageView.image = [UIImage imageNamed:@\"17-bar-chart.png\"];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@\"MMM d, y\"]; 
    NSDate *date = nil;

    NSDate *today = [NSDate date]; 
    NSDate *thisWeek  = [today dateByAddingTimeInterval: -604800.0];
    NSDate *thisMonth = [today dateByAddingTimeInterval: -2629743.83];

    if (indexPath.row == 0)
    {
        date = [NSDate date]; 
        NSString *dateString = [dateFormatter stringFromDate:date]; 
        cell.badgeString = dateString;
    }
    else if (indexPath.row == 1)
    {
        if ([[self.fetchedResultsController fetchedObjects]count] > 1)
        {
            self.session = [[self.fetchedResultsController fetchedObjects]objectAtIndex:1];
            NSDate *date = self.session.timeStamp;
            NSString *dateString = [dateFormatter stringFromDate:date]; 
            cell.badgeString = dateString;
        }
        else
        {
            cell.badgeString = @\"None\";
        }
    }
    else if (indexPath.row == 2)
    {
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        [fetchRequest setPredicate: [NSPredicate predicateWithFormat:@\"(timeStamp >= %@) AND (timeStamp <= %@)\", thisWeek, today]];
        [fetchRequest setEntity:[NSEntityDescription entityForName:@\"Session\" inManagedObjectContext:managedObjectContext]];
        NSError *error = nil;
        NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
        NSLog(@\"Fetch error: %@\", error);

        cell.badgeString = [NSString stringWithFormat:@\"%i\", [results count]];
        [fetchRequest release];
    }
    else if (indexPath.row == 3)
    {
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@\"(timeStamp >= %@) AND (timeStamp <= %@)\", thisMonth, today]];
        [fetchRequest setEntity:[NSEntityDescription entityForName:@\"Session\" inManagedObjectContext:managedObjectContext]];

        NSError *error = nil;
        NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
        NSLog(@\"Fetch error: %@\", error);

        cell.badgeString = [NSString stringWithFormat:@\"%i\", [results count]];
        [fetchRequest release];
    }
    else if (indexPath.row == 4)
    {
        cell.badgeString = [NSString stringWithFormat:@\"%i\", [[self.fetchedResultsController fetchedObjects] count]];
        NSLog(@\"%i\", [[self.fetchedResultsController fetchedObjects] count]);
    }

    UIImageView *myImageView = nil; 
    if (indexPath.row == 0 || indexPath.row == 1)
    {
        int myInt = cell.badgeString.length;
        if (myInt > 11)
        {
            myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@\"silvercell7.png\"]];
        }
        else if (myInt < 5)
        {
            myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@\"silvercell9.png\"]];
        }
        else
        {
            myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@\"silvercell8.png\"]];
        }
    }
    else
    {
        myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@\"silvercell5.png\"]];
    }

    [cell setBackgroundView:myImageView]; 
    [myImageView release];
    cell.badgeColor = [UIColor colorWithRed:24/255.0 green:83/255.0 blue:170/255.0 alpha:1.0];
    [cell.badge setNeedsDisplay];
    [dateFormatter release]; 
}
    
已邀请:
        我认为,您也许可以看到新添加的行的图像。但是不是文本,因为您的代码不支持该文本。 在您的代码中,您始终在创建新的单元格,尝试使用以下代码重用该单元格。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSMutableString *CellIdentifier  = [[NSMutableString alloc] initWithCapacity:10]
    [CellIdentifier appendFormat:@\"Cell_%d_%d\",indexPath.section,indexPath.row];

    TDBadgedCell *cell =  (TDBadgedCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell ==  nil)
    {
        TDBadgedCell *cell = [[[TDBadgedCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
    }
    [self configureCell:cell atIndexPath:indexPath];
    return cell;
}
    

要回复问题请先登录注册