1

私のアプリには、フォルダーとファイル (1 対多の関係) があります。そのため、アプリを開くと、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 についても同様。

よろしくランジット。

4

1 に答える 1

2

ランジット、

あなたの質問について、あなたがここで何を求めているのか理解できません。ですので、その他の詳細を教えてください。

特定のファイルが属するフォルダーを知るには、これを達成するのは非常に簡単です。

ファイルとフォルダの間に逆の関係を設定した場合は、その関係にアクセスするだけです。

たとえば、逆の関係が呼び出された場合、toFolder次のように現在のフォルダーを取得できます。

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

逆の関係を作成するには、こちらをご覧ください: Core data structure use multiple entities or not?

于 2013-01-08T13:58:50.707 に答える