各セルにボタンがあるUITableviewがあります。 私の問題は、最初の行のボタンをクリックすると、セルの高さが上がり、次にtableviewcellの別のボタンをクリックすると、すでにセルの高さが縮小され、選択されたセルの高さが増えます。ここでは、このリンクUITableView: How to change cell height dynamically when a button is clicked in it? SwiftUITableview:カスタムボタンをクリックするとセルの高さを動的に変更
をしようとすると、私のコードです:
var indexOfExpendedCell:NSInteger = -1
var shouldCellBeExpanded:Bool = false
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
cell.optionButton?.addTarget(self, action: #selector(ViewController.optionAction), forControlEvents: UIControlEvents.TouchUpInside)
return cell
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if shouldCellBeExpanded && indexPath.row == indexOfExpendedCell {
return 102
}
else { return 57 }
}
}
func optionAction(sender: UIButton){
if let button = sender as? UIButton {
shouldCellBeExpanded = !shouldCellBeExpanded
indexOfExpendedCell = sender.tag
if shouldCellBeExpanded {
self.tableView.beginUpdates()
self.tableView.endUpdates()
button.setImage(UIImage(named: "Reject Icon filled"), forState: .Normal)
}
else {
self.tableView.beginUpdates()
self.tableView.endUpdates()
button.setImage(UIImage(named: "Reject Icon"), forState: .Normal)
}
}
}
このコードを試した後、私は同じ行のボタンをクリックすると、セルの高さを拡大して減少しています。私は、次の手順に
手順を行うに失敗しました: 1のセルの高さは、今私は2番目の行の高さを低くする必要がある最初の行をクリックして、最初の行の高さを拡張
2を展開されている第二列をクリックしてください誰でも助けてくれますか?
私は、あなたのセルの拡張可能なステータスと拡張インデックスの情報を格納する2つの配列変数を持つ必要があるようだと思う。したがって、これらの配列を使用して、optionAction関数またはtableview delegate関数のいずれかでセルの状態を追跡することができます。 – woogii
@woogiiご返信ありがとうございます。 – Aravi