gpt4 book ai didi

ios - 单击 UIButton 后如何更改 UITableviewCell 标签文本?

转载 作者:行者123 更新时间:2023-11-28 05:46:55 25 4
gpt4 key购买 nike

我在 UITableViewCell 中有一个复选框 (UIButton) 和一个标签。我想在单击复选框时更改标签的文本(颜色 + 删除线)。

这是一个食谱应用程序。 cooking 步骤完成后,用户可以“检查”它是否完成。

这是我当前用于 tableView 的 cellForRowAt 函数:

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == groceryTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: groceryTableViewCell, for: indexPath) as! GroceryItemTableViewCell
cell.amoutLabel.text = indexPath.item % 2 == 0 ? "50 g" : "500 ml"
cell.itemLabel.text = indexPath.item % 2 == 0 ? "Cheese" : "Milk"
cell.selectionStyle = .none
return cell
}
else {
let cell = tableView.dequeueReusableCell(withIdentifier: cookingStepTableViewCell, for: indexPath) as! CookingStepTableViewCell
cell.cookingStepDescription.text = indexPath.item % 2 == 0 ? "Test 123..." : "Test 321..."
cell.selectionStyle = .none
cell.delegate = self
return cell
}
}

这是我的 Button addTarget 函数,它从 TableViewCell 类委托(delegate)给实际的 ViewController 类:

func cookingStepDone(description: String, isDone: Bool) {
// if isDone == true
// label textcolor is gray + strikethrough

// if isDone == false
// no change...
}

如果“isDone”为真(= 单击复选框),我希望更改 cell.cookingStepDescription 标签

最佳答案

假设按钮 socket 取在单元格类中。所以在 cellForRowAtIndexpath 中声明一个操作方法,就像这样。

 cell.yourDoneBtn?.addTarget(self, action: #selector(self.cookingStepDone), for: .touchUpInside)

现在在你的 Action 函数中:

@objc func cookingStepDone(sender: UIButton)
{
let location = self.yourTableViewName?.convert(sender.bounds.origin, from:sender)
let indexPath = self.yourTableViewName?.indexPathForRow(at: location!)
if let cell = self.yourTableViewName.cellForRow(at: indexPath!) as? yourTableViewCell // i.e groceryTableViewCell or CookingStepTableViewCell
{
if isDone == true
{
// Set your cell label textcolor to gray + strikethrough
}
else
{
// no change
}
}
DispatchQueue.main.async
{
self.yourTableView.reloadData() // reload your table view
}
}

在需要的地方设置你的 bool 值。

关于ios - 单击 UIButton 后如何更改 UITableviewCell 标签文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54307704/

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