TableView自动重新排序

时间:2015-09-14 13:57:14

标签: ios objective-c uitableview core-data

我有一个tableView,我可以正常添加单元格。只是你明白了,我的tableView是由一个核心数据填充的,我使用fetch来获取项目并将它们添加到一个可变数组中。在获取之后,我从tableview调用reload方法。但是如果我进入单元格来编辑它的内容,当我回到它时,tableview会自动重新排序,我认为这是因为重载方法,但是如果我不调用它,那么fetch就不会显示任何内容。这是我的获取:

NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Entity1"];
NSFetchRequest *fetchRequest2 = [[NSFetchRequest alloc] initWithEntityName:@"Entity2"];
self.titles = [[managedObjectContext executeFetchRequest:fetchRequest error:nil]mutableCopy];
self.stitles = [[managedObjectContext executeFetchRequest:fetchRequest2 error:nil]mutableCopy];

[self.tableView reloadData];

此外,它只重新排序第二个数组,即带字幕的数组。肯定有办法阻止这种情况发生或以某种方式重新加载tableView。

2 个答案:

答案 0 :(得分:1)

您应该重用fetchedResultsController属性。在NSFetchedResultsControllerDelegate委托方法中,使用以下内容:

- (NSFetchedResultsController *)fetchedResultsController
{
    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }
}

答案 1 :(得分:0)

您实际上不需要重新加载整个tableview。您可以像这样重新加载特定的单元格:

[self.tableView selectRowAtIndexPath:selectedRow animated:NO scrollPosition:UITableViewScrollPositionNone];