我的单元格的字符串文本(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];
}
答案 0 :(得分:0)
我想,您可能会看到新添加的行的图像。但不是文本因为你的代码中没有对它的支持。
在您的代码中,您始终在创建新单元格,请尝试使用以下代码重复使用单元格。
- (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;
}