2016-10-26 1 views
0

私はUITableViewで、次の設定があります。複数のカスタムプロトタイプセルでinsertRowsAtIndexPath()を使用するにはどうすればよいですか?

  • プロトタイプセル1 =常に表示は、1つのUITextFieldを含む行(入力が他の細胞が消える/表示されるようになるの)といくつかのラベルを持っています。
  • 試作電池2 =を入力に基づいて表示され、被写体からの画像と1行が
  • プロトタイプセル3 =は、入力に基づいて表示され、入力に基づいて表示さ
  • プロトタイプセル4 =オブジェクトからラベルを有する1行、オブジェクト内の配列に基づいた行数

私はオブジェクト(セル2の単一行)、名前(セル3の単一行)、および配列(セルの複数の行4)。

プロトタイプセル1の入力に基づいて、セル2,3,4を表示して表示する必要があります。これらの新しいセルのすべてのデータは、UITextfieldに何かを入力して決定したオブジェクト最初のセル。

しかし、私はどこで、どのように新しい行/セルを作成するには、次のメソッドを実装するために把握するように見えることはできません。

tableView?.insertRows(at:[IndexPath(row: 1, section: 0)], with: .automatic) 

私は、プロトタイプセル2に1行を挿入するためにそれを使用する必要がありますプロトタイプセル3に1行、プロトタイプセル4に複数の行を挿入します。

そして助けになると大変助かります。

+0

ですべてのテーブルをリロードすることができ、データを更新する必要があります。 – KrishnaCA

答えて

0

私はinserRows()がそれを行う最良の方法ではないと信じています。

あなたはcellForRowAtIndexPathを使用することができますし、あなたはあなたがcellForRowAtIndexPathメソッドでプロトタイプセルのためにあなたのロジックを追加なっているreloadData()またはreloadRowsAtIndexPaths()

override func tableView(tableView: UITableView!, 
    cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? { 
     if indexPath.row == 1 { 
      var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell1 ") as YourTableViewCell 
     return cell 
     } 
     else if indexPath.row == 2 { 
      var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell2 ") as YourTableViewCell 
     return cell 
     } 
     //do this to maintain the same cells at position 1..4 and for the rest of the rows 
     else { 
      var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell5 ") as YourTableViewCell 
      return cell 
     } 

    } 
+0

なぜ私は3つの新しいセルをアニメーション化する必要があるので、insertRows()関数を試してみたいのです。 reloadData()を使用すると、最初の(常に表示されている)セルも誤ってリフレッシュされます。 reloadRowsAtIndexPaths()は私に不特定のエラーを与えました。 私はセルに入る実際のデータをどこに設定するのかと混同しています... 私は完全な問題をここで詳しく説明しました:[リンク](http://stackoverflow.com/questions/40259423/swift) -how-to-animate-show-hide-cell-based-on-uitextfield-re-loading) – Aovib

+0

UITableViewControllerを変更して、UIViewを最初の行の場所に配置すると、他の行が表示されますUITableViewの内部で、heightForRowAtを使用してセルを隠して表示する代わりに、cellForRowAtIndexPath内のフラグを使用して正しいセルを表示し、reloadData()を使用します。 – kileros

関連する問題