2017-01-08 4 views
0

私のアプリケーションのメニューにUITableViewがあります。この表には、最初に特定の数のセル(行)があります。例えばindexPath.row = 1を有するセルをクリックすると異なるタイプのセルをUITableViewに追加する

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return 5; 
} 

、私は(そう、インデックス2、3および4で)このセルの後にいくつかの新しいセル(3つのセルを言うことができます)を追加しなければなりません。このセルを2回目にクリックすると、追加したセルを削除する必要があります。問題は、追加するセルに異なるタイプ(別のクラス)があることです。私はどのようにセルを追加/削除するかについて調べて、insertRowsAtIndexPathsと削除したものを使用できることを発見しました。しかし、どのようにしてセルのタイプを指定して返すことができますか? これは私のセルのボタンのターゲットである:

[cell.showDetail addTarget:self action:@selector(btnSowDetailClicked) forControlEvents:UIControlEventTouchUpInside]; 

私は私が説明するものを行うためにセレクタに入れてのか分からない:

-(void) btnSowDetailClicked { 
    // ???? 
} 

そして、どのように私はnumberOfRowsInSectionを設定することができますセレクタ?

答えて

-1

セルを追加する必要があるときに、セルのタイプに関係なく、セルを格納するためのmutable配列を初期化し、配列に格納することができます。その後、numberOfRows方法で

、ちょうどreturn array.count;

cellforrowatindexpath方法では、あなたの配列からセルを取得し、セルを返します。

0

あなたはまだされていない場合を追跡する必要があるいくつかの事がある -

  1. ボタン
  2. の状態の細胞のクラスのためのデータソースが
  3. を返すために、細胞の数は、

1つの提案は、再NSMutableArrayのNSStringsを(管理することです

NSStringsは、特定のインデックスのセルクラスを表します(例:return)。 @ "のUITableViewCell" または "MyCustomCell" など)@ - すぐに関連するデリゲートとデータソースメソッドを呼び出します

のUITableView -

-(void) btnSowDetailClicked { 
    // Toggle button state - prob better to persist in property BOOL cellButtonState 
    cellButtonState = !cellButtonState; 
    // update data source(s) accordingly 
    if (cellButton.selected) { 
      // add NSStrings to data source array 
      // create array of NSIndexPaths to pass to table view 
      // update UITableView with - (void)insertRowsAtIndexPaths:withRowAnimation: 
    } 
    else { 
      // remove NSStrings from data source array 
      // create array of NSIndexPaths to pass to table view 
      // update UITableView with - deleteRowsAtIndexPaths:withRowAnimation: 
    } 
} 

上記のUITableView方法に関するドキュメントに記載されているようにその後、細胞や目に見える細胞のための他のコンテンツを取得します。

したがって、データソースは、行数に対して[dataSourceArray count]を返すことができます。セルを返す場所の正しいクラスを取得するには、cellForRowAtIndexPathグラブNSStringオブジェクトをindexPathのデータソース配列から取得します。セルのクラスを取得するにはNSClassFromStringを使用してください。

関連する問題