gpt4 book ai didi

ios - 用户界面 TableView : Change cell height dynamically when clicked the custom button

转载 作者:搜寻专家 更新时间:2023-10-31 22:12:59 25 4
gpt4 key购买 nike

我有一个 UITableview,其中每个单元格都有一个按钮。我的问题是,如果我单击第一行的按钮,单元格的高度增加,然后我单击 tableviewcell 中的另一个按钮,已经展开的单元格高度将减小,选定的单元格高度将增加

尝试此链接后 UITableView: How to change cell height dynamically when a button is clicked in it? Swift

这是我的代码:

    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. 现在单击第一行我需要降低第二行的高度并扩大第一行的高度

谁能帮帮我?

最佳答案

创建一个数组来保存应该展开的单元格。按下按钮时,相应地向数组添加或删除元素。这是代码:

// Initialize an empty array of integers
var expandedCells = [Int]()

@IBAction func buttonPressed(_ sender: AnyObject) {
// If the array contains the button that was pressed, then remove that button from the array
if expandedCells.contains(sender.tag) {
expandedCells = expandedCells.filter({ $0 != sender.tag})
}
// Otherwise, add the button to the array
else {
expandedCells.append(sender.tag)
}
// Reload the tableView data anytime a button is pressed
tableView.reloadData()
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
// Set the tag on your button to be equal to indexPath.row
// This allows @IBAction func buttonPressed(_ sender: AnyObject) above to discern which row was tapped
cell.myButton.tag = indexPath.row
return cell
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
// Set the row height based on whether or not the Int associated with that row is contained in the expandedCells array
if expandedCells.contains(indexPath.row) {
return 102
} else {
return 57
}
}

关于ios - 用户界面 TableView : Change cell height dynamically when clicked the custom button,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39673583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com