我有VC1标签(显示我的任务数量)。 在VC2中,我在tableView中拥有所有任务,我可以删除它们(保存在COREDATA中的任务)
问题是,如果我有5个任务,标签显示“05”但是当我去VC2并删除一个任务,然后回到VC1它会在同一个标签上显示“05”和“04”并且相同位置,它就像VC1做'屏幕截图'。当我去其他VC或重新加载APP时,这是正常的。
为什么会这样?我该如何解决?
tnx,抱歉我的英语。
在viewDidAppear中:
// fetchData FROM CORE DATA Tasks //
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entityTasks = [NSEntityDescription entityForName:@"Device" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entityTasks];
NSError *errorTasks = nil;
fetchedObjectsTasks = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&errorTasks];
if (fetchedObjectsTasks == nil) {
NSLog(@"Problem with fetch! %@",errorTasks);
}
numberOfIssues = [NSMutableArray arrayWithObjects:[NSString stringWithFormat:@"%lu",(unsigned long)fetchedObjectsTasks.count],nil];
在TableCell中:
numberOfIssueLabelView.frame = CGRectMake(224, 11, 20, 21);
numberOfIssueLabelView = [[UILabel alloc] initWithFrame:numberOfIssueLabelView.frame];
numberOfIssueLabelView.text = [numberOfIssues objectAtIndex:(indexPath.row)];
numberOfIssueLabelView.font = [UIFont systemFontOfSize:15.0f];
numberOfIssueLabelView.textColor = [UIColor whiteColor];
[cell addSubview:self.numberOfIssueLabelView];
return cell;
当你没有添加或删除任务时,我认为VC1需要刷新一些。
答案 0 :(得分:1)
使用NSNotificationCenter向VC1发送通知以更新号码,或者创建协议VC2Delegate
并让VC1将自己设置为VC2的委托,因此VC2可以在必要时联系其代表更新计数
另外,请确保您没有实例化多个标签,而只是实例化一个标签并在必要时进行更新。
答案 1 :(得分:0)
使用fetchedResultsController管理tableView。这样,任何更新都会在UITableView中正确反映出来。请参阅上面的评论,重新展示展示此功能的应用。