0

tableViewの場合、テーブルに常に存在する 5 つの行があります。そのうちの 1 つをタップすると、タップした行の下に新しい 3 つの行が表示されます。

最初の 5 行がデフォルトの場合UITableViewCell、3 つのセルも別のカスタム セルから取得したいと考えています。そのため、メインの 5 つのセルは、セカンダリ行 (メイン セルの下に 3 つ) とは異なります。

セカンダリ行を追加する方法は次のとおりです。

tableViewデリゲートでdidSelectRowAtIndexPath

NSInteger count = indexPath.row + 1;
NSMutableArray *newRows = [NSMutableArray array];//

   self.expandedIndex = indexPath.row + 1;
   self.tableExpanded = YES;

   for(int i = 0; i < [self.numbers count]; i++)
   {
        NSIndexPath *path = [NSIndexPath indexPathForRow:count inSection:0];
        [newRows addObject:path];
        [self.myArray insertObject:[self.numbers objectAtIndex:i] atIndex:count];
        count++;
   }

     [tableView insertRowsAtIndexPaths:newRows withRowAnimation:UITableViewRowAnimationTop];

行が追加されましたが、作成したいカスタムセルからのものにしたい、、、任意のアイデア

4

1 に答える 1

0

これが私がすることです。newRowsプロパティを作成し、最後にdidSelectRowAt...テーブルの更新を呼び出します。次にcellForRowAtIndexPath、特定の indexPath が にあるかどうかを確認するためのチェックnewRowsで、別のセル スタイルを使用している場合:

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell;

    if ([self.newRows contains:indexPath]) {
        // create custom cell
    } else {
        // create normal cell
    }

    return cell;
}

これが意味をなさない場合はお知らせください。詳しく説明できます。

また、処理する興味深いエッジ ケースがいくつかあることに注意してください。たとえば、ユーザーが 3 番目のセルをクリックして新しいセルが行 4 ~ 6 に挿入され、後でセル 2 をクリックして行 3 ~ 5 に新しいセルを追加した場合、前の 4 ~ 6 セルは次のようになります。行 7-9。アプリをどのように構成しているかはわかりませんが、これは問題ではないかもしれません (5 つのセルのうちの 1 つに一度にサブセルを追加できるなど) が、これが可能性であることを認識してください。

于 2013-02-08T17:27:23.877 に答える