1

ゴール

ネストされた UITableView にこのコードを使用して、行の追加と並べ替えを実装します。

私がいる場所

これを前のコードと組み合わせて使用​​すると、行を移動できますが、行を適切に挿入および削除する方法がわかりません。

プラン

初期データ構造は次のように作成されます。

    treeNode = [[MyTreeNode alloc] initWithValue:@"Root"];
    MyTreeNode *node1 = [[MyTreeNode alloc] initWithValue:@"Node1"];
    [treeNode addChild:node1];

    MyTreeNode *node1a = [[MyTreeNode alloc] initWithValue:@"Node1a"];
    MyTreeNode *node1b = [[MyTreeNode alloc] initWithValue:@"Node1b"];
    [node1 addChild:node1a];
    [node1 addChild:node1b];

    MyTreeNode *node1a1 = [[MyTreeNode alloc] initWithValue:@"Node1a1"];
    [node1a addChild:node1a1];

    MyTreeNode *node1b1 = [[MyTreeNode alloc] initWithValue:@"Node1b1"];
    MyTreeNode *node1b2 = [[MyTreeNode alloc] initWithValue:@"Node1b2"];
    MyTreeNode *node1b3 = [[MyTreeNode alloc] initWithValue:@"Node1b3"];

    [node1b addChild:node1b1];
    [node1b addChild:node1b2];
    [node1b addChild:node1b3];
    node1b.inclusive = NO;

    MyTreeNode *node2 = [[MyTreeNode alloc] initWithValue:@"Node2"];
    [treeNode addChild:node2];

    MyTreeNode *node2a = [[MyTreeNode alloc] initWithValue:@"Node2a"];
    [node2 addChild:node2a];

    MyTreeNode *node2a1 = [[MyTreeNode alloc] initWithValue:@"Node2a1"];
    [node2a addChild:node2a1];

私が見ているように、行を並べ替える場合、プロセスは次のようになります。

  1. MyTreeNodeを使用して、移動した行のの新しいインスタンスを作成しfromIndexPathます。
  2. MyTreeNodeを使用して、移動した行が挿入される場所の上の行にの新しいインスタンスを作成しますtoIndexPath
  3. ある種addObject:object toParent:parentのメソッドを使用して、上記の 2 つのインスタンスを相互に追加します。

行を追加するだけの場合、プロセスはかなり似ているはずです。

質問

  • 上記の計画は問題を解決するための正しい方法ですか? もしそうなら、方法を作成するための正しい方法は何addObject:object toParent:parentですか?
  • 並べ替え時に、上位レベルのセクションが下位レベルのセクションに挿入されないようにするにはどうすればよいですか? 例: 小見出しの下に見出しを挿入できません。

どんな助けでも大歓迎です!

4

0 に答える 0