我的应用程序中有一个Master和Detail TableViewControllers。如果用户在MasterTableViewController上单击+符号,则会将它们带到DetailTableViewController,在那里他们可以键入/编辑" title"和"文字"。一旦他们点击后退按钮(&lt ;-),它就会将他们带回到MasterTableViewController,并在TableView底部有一个新单元格。为了在TableView顶部显示新添加的单元格,我需要做哪些更改? 这是viewWillDisappear方法,当它们单击后退(&lt ;-)按钮时会被调用。
-(void)viewWillDisappear:(BOOL)animated {
NSManagedObjectContext *context = [self managedObjectContext];
if (self.note) {
// Update existing Notes
[self.note setValue:self.titleField.text forKey:@"title"];
[self.note setValue:self.textView.text forKey:@"text"];
} else {
// Create a new Notes
NSManagedObject *newNote = [NSEntityDescription insertNewObjectForEntityForName:@"Note" inManagedObjectContext:context];
[newNote setValue:self.titleField.text forKey:@"title"];
[newNote setValue:self.textView.text forKey:@"text"];
}
NSError *error = nil;
// Save the object to persistent store
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
[self dismissViewControllerAnimated:YES completion:nil];
}
//查看显示
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// fetch the Note from persistent data store
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Note"];
self.notes = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
// [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:[self.notes count] inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];
[self.tableView reloadData];
}
答案 0 :(得分:3)
您似乎正在使用CoreData
来存储新创建的对象。在Master TableViewController上,在viewDidAppear
中,您必须编写代码以将所有CoreData
个对象提取到一个数组中,然后重新加载表数据(通过调用[tableView reloadData]
)。这将使用最新数据重新加载表。
编辑:在最上面显示最新元素
CoreData
Entity
添加新属性,类似modifiedOn
,类型为NSDate
。 [newNote setValue:[NSDate date] forKey:@"modifiedOn"];
sortDescriptor
中将此属性用作fetchRequest
,以根据 modifiedOn-date对对象进行排序。