2016-06-14 7 views
1

私は、他にもボタンを含むuitableviewcell(cell1)のサブクラスがあるところで、テーブルビューを作成しようとしています。このボタンは、ボタンがcell1でクリックされたときに、その直下にあるuitableviewcell(cell2)の別のサブクラスを追加および削除することが想定されています。私は何が起こりたいかについて、かなり貧弱なイラストを付けました。 enter image description here特定のUITableViewCellの下にUITableViewCellを追加および削除する

私がしようとしたことは、ボタンがタップされたときでした。cell1の配列[indexPath.row + 1]にあるセルオブジェクトの配列にcell2を挿入して、タップするとそのオブジェクトを配列から削除します細胞。私が挿入またはセルを削除した後、私はテーブルビューを再ロードして配列を反映するように更新しますが、これはネジ止めされていて、私はそれをすべきだと考えていません。

var tableCellObjects: [NSObject] = [] //grab the cell objects from an API call and append the cell2Object when a cell1 is expanded 


func moreButtonTapped(sender: UIButton) { 

    var indexPath: NSIndexPath! 

    if let superview = sender.superview { 
     if let cell = superview.superview as? Cell1 { 
      indexPath = tableView.indexPathForCell(cell) 
     } 
    } 

    if tableCellObjects[sender.tag].isKindOfClass(Cell1Object) { 
     let cell1Object = tableCellObjects[sender.tag] as! Cell1Object 

     if cell1Object.expanded { 
      cell1Object.expanded = false 
      sender.setImage(UIImage(named: "MoreButtonClosed.png"), forState: .Normal) 
      tableCellObjects.removeAtIndex(indexPath.row+1) 

      tableView.reloadData() 
     } else { 
      cell1Object.expanded = true 
      sender.setImage(UIImage(named: "MoreButtonOpen.png"), forState: .Normal) 
      tableCellObjects.insert(Cell2Object(param1, param2: param2), atIndex: indexPath.row+1) 
      tableView.reloadData() 
     } 

    } 
} 
+0

コードがたくさんある簡単な質問。キーコードを投稿してください。 – Lumialxk

+0

フラフコードのように思えるものを削除しました。残っているのは、細胞を追加/除去する機能です。キーコードの意味ですか? – Frodgers

答えて

1

データが変更されたら、データソースを更新してからインデックスパスを挿入/削除/再読み込みする必要があります。

public func insertRowsAtIndexPaths(indexPaths: [NSIndexPath], withRowAnimation animation: UITableViewRowAnimation) 
public func deleteRowsAtIndexPaths(indexPaths: [NSIndexPath], withRowAnimation animation: UITableViewRowAnimation) 
public func reloadRowsAtIndexPaths(indexPaths: [NSIndexPath], withRowAnimation animation: UITableViewRowAnimation) 

をそして私はあなたがアニメーションを滑らかにするために.Fadeを使用することをお勧め:以下の機能を使用します。

関連する問題