如何强制NSFetchedResultsChangeInsert使用另一个Tableview而不是tableviewcontroller使用的Tableview?

时间:2012-09-13 08:14:04

标签: core-data nsfetchedresultscontroller

我有一个应用程序,我正在制作2 Tableview Vertical One这是Tableviewcontroller使用的那个,&在每个部分我有1行,我在其中创建了另一个Horizo​​ntal tableview,当我在“AddItemViewController”中添加ManagedObject时,ManagedObject被正确保存,尽管在tableviewcontroller中调用NSFetchedResultsChangeInsert时,它使用垂直tableview来更新,而不是水平。

我错过了什么,但是我无法弄明白,任何帮助?

2 个答案:

答案 0 :(得分:0)

实际上,NSFetchresultschangeinsert在下面的代码中:

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
       atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
      newIndexPath:(NSIndexPath *)newIndexPath
{
    HorizontalTableCell *fuck=[[HorizontalTableCell alloc]init];
    UITableView *tableView= fuck.horizontalTableView;
    //UITableView *tableView = self.tableView;
    //newIndexPath.section==indexPath.section;
    //NSLog(@"The Type of the Fetched %d",i);

    switch(type) {
        case NSFetchedResultsChangeInsert:

            [tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
            break;

        case NSFetchedResultsChangeDelete:
            [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
            break;

        case NSFetchedResultsChangeUpdate:
            [self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
            break;

        case NSFetchedResultsChangeMove:
            [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
            [tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
            break;
    }
}

默认情况下,此代码位于Apple Default CoreData,UItableViewController

答案 1 :(得分:0)

我解决了这个问题,方法是在MainViewController中执行Fetch请求,将其传递给NSMutableArray,然后在Other Tableview中使用,执行我的更改,然后使用NSManagedObjectContext,并向MainViewController发送通知,重新加载表再次查看数据