如何在表格视图的顶部添加新单元格?

时间:2015-09-15 20:20:35

标签: objective-c uitableview core-data

我的应用程序中有一个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];
}

1 个答案:

答案 0 :(得分:3)

您似乎正在使用CoreData来存储新创建的对象。在Master TableViewController上,在viewDidAppear中,您必须编写代码以将所有CoreData个对象提取到一个数组中,然后重新加载表数据(通过调用[tableView reloadData])。这将使用最新数据重新加载表。

编辑:在最上面显示最新元素

  1. 向您的CoreData Entity添加新属性,类似modifiedOn,类型为NSDate
  2. 将此属性设置为[newNote setValue:[NSDate date] forKey:@"modifiedOn"];
  3. 然后,您可以在sortDescriptor中将此属性用作fetchRequest,以根据 modifiedOn-date对对象进行排序。