gpt4 book ai didi

swift - 每次带有启用按钮的单元格消失时,都会插入一个带有已激活按钮的新单元格

转载 作者:行者123 更新时间:2023-11-28 07:21:44 25 4
gpt4 key购买 nike

first cell with manually activated button

i have added a few new cells

the first cell with the enabled button disapears and the new added cell has automatically an enabled button

我在 xib 文件中用 UIButton 创建了一个单元格。该按钮是一个 checkmarkbutton 所以当我点击它时它会显示一个复选标记。当我在单元格中启用一个按钮并添加一些新单元格时,带有启用复选标记按钮的单元格从 tableview 的 View 中消失时,会自动出现一个带有已启用按钮的新单元格。我怎样才能阻止它?

var sliderValues = [String]()

@IBAction func addNewCell(_ sender: Any) {
sliderValues.insert("\(Int(waterAmountSlider.value)) L", at: 0)
tableView.insertRows(at: [IndexPath(row: 0, section: 0)], with: UITableView.RowAnimation.automatic)


}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 65.0
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return sliderValues.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "xibcell", for: indexPath) as! TableViewCell


cell.cellWaterAmountLabel.text = sliderValues[indexPath.row]
// cell.cellLabel.textColor = UIColor.lightGray
cell.backgroundColor = UIColor.groupTableViewBackground
cell.selectionStyle = .none
return cell
}

xib 单元格代码

class TableViewCell: UITableViewCell {

@IBOutlet weak var cellButton: UIButton!

@IBOutlet weak var cellWaterAmountLabel: UILabel!

@IBAction func cellButtonPressed(_ sender: Any) {

cellButton.setImage(UIImage(named: "enabledCheckbox"), for: UIControl.State.normal)
}
}

最佳答案

它正在重复使用您已经创建的单元格。为避免此行为,您必须在更新按钮的单元格时捕获并更新状态。

这可能是一个可能的解决方案:

var sliderValues = [(String, Bool)]()

@IBAction func addNewCell(_ sender: Any) {
sliderValues.insert(("\(Int(waterAmountSlider.value)) L", false), at: 0)
tableView.insertRows(at: [IndexPath(row: 0, section: 0)], with: UITableView.RowAnimation.automatic)
tableView.reloadData()
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 65.0
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return sliderValues.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "xibcell", for: indexPath) as! TableViewCell

cell.cellWaterAmountLabel.text = sliderValues[indexPath.row].0
cell.isButtonSelected = sliderValues[indexPath.row].1
cell.backgroundColor = UIColor.groupTableViewBackground
cell.selectionStyle = .none

cell.changeHandler = { text, isOn in
sliderValues[indexPath.row] = (text, isOn)
}

return cell
}

这将是 TableView 单元格:

class TableViewCell: UITableViewCell {

var isButtonSelected: Bool = false
var changeHandler: ((String, Bool) -> Void)?

@IBOutlet weak var cellButton: UIButton!

@IBOutlet weak var cellWaterAmountLabel: UILabel!

@IBAction func cellButtonPressed(_ sender: Any) {
isButtonSelected.toggle()
let image = isButtonSelected ? UIImage(named: "enabledCheckbox") : UIImage(named: "disabledCheckbox")
cellButton.setImage(image, for: UIControl.State.normal)
changeHandler?(cellButton.titleLabel?.text ?? "", isButtonSelected)
}
}

关于swift - 每次带有启用按钮的单元格消失时,都会插入一个带有已激活按钮的新单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57827494/

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