2017-03-07 7 views
1

を閉じずに拡張可能なテーブルビューセル:https://www.youtube.com/watch?v=VWgr_wNtGPM、StackOverflowの上this answerによって補完。スウィフト3 - 私はこのチュートリアルで、次のしてきたスウィフト3.</p> <p>を使用しています他のもの

しかし、私がセルをクリックすると、他のセルを隠している間に展開されます。私がそれを展開すると、すでに展開されている他のセルが拡大し続けるようにするにはどうすればいいですか?

+0

あなたはあなたの質問を解決しましたか?そうでなければ、私はあなたにこれを手伝ってくれるでしょう。 –

答えて

0

を見てみましょう。

var cellsData: [CustomData] = []; 

CustomDataはのように思える::

class CustomData { 
    var isExpanded: Bool = false; 
    // whatever other variables 
} 

その後、カスタムセルがどのように見えるはずです何が、あなたが何かをしなければなりません

最初のステップは、あなただけの好きなモデルのリストを作成する必要がありますですtableView:didSelectItemAtのように:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let row = indexPath.row; 
    self.cellsData[row].isExpanded = !self.cellsData[row].isExpanded; 
    self.tableView.reloadRows(at: [indexPath], with: .none); // or the other animations 
} 

"tableView:cell ForRowAtは」のように思える:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell; 
    if(cell.isExpanded){ 
     // do something when the cell is expanded 
    }else{ 
     // do something when the cell is not expanded 
    } 
} 

は、セルが再利用可能である、覚えて、あなたがより1時間以上のセルを使用している場合は、それが最後の時間を使用した場合、その後、セルが状態を維持することを意味します。

0

ExpyTableViewを使用すると、指定したヘッダーセルから拡張可能なセクションが作成されます。 iOS 8.0と互換性があります。

あなたがしなければならないのはimport ExpyTableViewにして、次のとおりです。

class ViewController: ExpyTableViewDataSource, ExpyTableViewDelegate { 

    @IBOutlet weak var expandableTableView: ExpyTableView! 

    // First, set data source and delegate for your table view. 
    override func viewDidLoad() { 
    super.viewDidLoad() 
    expandableTableView.dataSource = self 
    expandableTableView.delegate = self 
    } 

    // Then return your expandable cell instance from expandingCell data source method. 
    func expandableCell(forSection section: Int, inTableView tableView: ExpyTableView) -> UITableViewCell { 
    // this cell will be displayed at IndexPath with section: section and row 0 
    } 
} 

あなたの元テーブルビューセクションは、現在、拡張テーブルビューセクションで見ることができます。 example projectをダウンロードし、より詳細な例を参照することもできます。

関連する問題