在使用CoreData的TableView中将行移动到底部

时间:2013-01-05 10:11:44

标签: ios uitableview ios5 core-data ios6

在我的应用程序中,我有一个文件夹文件(一对多关系)。所以,当我打开我的应用程序时,我的firstViewController包含所有文件,当点击每个文件夹时,它会打开一个tableViewController,显示该文件夹中的文件。

现在,每当我滑动任何一行时,它都会移动到底行,并且表格会相应地更新,下一个刷过的行将会位于第一个滑动行的上方。

例如,目前如果我的表包含

0 1 2 3
A B C D

轻扫A

0 1 2   3
B C D **A**

刷B后

0 1   2 3
C D **B A**

等等,

要执行此功能,我还应该更新NSOrderedSet 如下所示

for (int i = 0; i < [self.folder.file count]; i++)
        {
            File *file =  [self.folder.file objectAtIndex:i];
            if(file.completedStatus == false)
            {
                m_position = i;
                m_finalIndexPath = [NSIndexPath indexPathForRow:i inSection:0];
            }
        }

        file.completedStatus = YES;

        id obj = [self.folder. file objectAtIndex:row];

        NSMutableOrderedSet *files = [self.folder.file mutableCopy];
        [files removeObjectAtIndex:row];
        [files insertObject:obj atIndex:m_position];


        NSIndexPath *currentIndexPath = [NSIndexPath indexPathForRow:row inSection:0];
        [m_tableView moveRowAtIndexPath:currentIndexPath toIndexPath:m_finalIndexPath];         
        self.folder.file = files;       
         }
         [self.managedObjectContext save:nil];    
         [m_tableView reloadData];

这在此视图中工作正常,此处self.folder是用户单击

的特定文件夹

现在我有另一个名为TestViewController的ViewController,其中我有一些文件对象,而不管它们存在于哪个文件夹中。我已经使用这些文件填充了这个TestViewController的表,现在在这里,当我滑动单元格时,它们将改变颜色但不移动它们的位置如上所述

例如

0 1 2 3
A C B D

after swiping A and B

  0   1   2   3
**A** C **B** D

现在这里A可以属于文件夹1,B可以属于文件夹2,

当我关闭(解散)这个TestViewController时,应该发生什么

a)它默认显示fileViewController b)文件A的颜色应该改变,它应该通过检查是否已经有滑动的单元格移动到一个位置。如果是,则应将其置于其上方或底部。

c)类似于颜色B.

此致 兰吉特。

1 个答案:

答案 0 :(得分:2)

兰吉特,

关于你的问题,我无法理解你在这里问的是什么。所以,请提供一些其他细节。

要知道特定文件所属的文件夹,这很容易实现。

如果您在文件和文件夹之间设置了反向关系,只需访问该关系即可。

例如,如果调用反向关系toFolder,则可以检索当前文件夹,如

Folder* currentFolder = currentFile.toFolder; // or access it through KVC

要创建反向关系,请查看此处:Core data structure use multiple entities or not?