gpt4 book ai didi

swift - 如何将自定义单元格类中的 "pass"信息发送到 viewController?

转载 作者:搜寻专家 更新时间:2023-11-01 05:35:34 26 4
gpt4 key购买 nike

我有一个自定义单元格类,其中包含一个我想用来保存整数值(存储为字符串)的 slider 。 slider 的值保存到自定义单元格中的全局变量中,viewController 中的保存函数应该保存该值。但是,它不会保存更新后的值。 (我认识到保存到一个全局变量然后在不同的 View 中使用该全局变量不是一个好主意,但我不知道如何传递信息......我使用了 prepareForSegue对于其他场景,但这里没有 segue ... slider 位于 viewController 的单元格中)。这是代码:

var moneyValue: Int = Int()
var moneyAmount: String = String()
class CustomCell: UITableViewCell, UITextFieldDelegate {
@IBOutlet weak var moneySlider: UISlider!
@IBAction func sliderValueChanged(_ sender: UISlider) {
moneyValue = Int(sender.value)
moneyLabel.text = String(moneyValue)
moneyAmount = moneyLabel.text!
}
}//there is an initializer (not posted) that sets the original value to 0

这里是整体的 viewController 代码:

class CreateVC: UIViewController, UITableViewDelegate, UITableViewDataSource, CustomCellDelegate, UITextFieldDelegate, UITextViewDelegate { 
@IBAction func saveButtonTapped(_ sender: UIBarButtonItem) {
//save moneyAmount to DB
}
}

保存到数据库非常简单,但是无论 slider 的位置如何,“0”值始终是保存的值。 “0”是 slider 的初始位置,所以我认为问题是 slider 的更新值没有以某种方式保存到变量中。 1. 我该如何解决这个问题和/或 2. 如果当前设置不理想,传递此信息的适当方式是什么?

最佳答案

我根据评论编辑了这个答案。

在cell.swift中定义一个协议(protocol)

protocol CellDelegate : class
{
func cellDelegate(moneyValue: Int) -> Void
}
extension CellDelegate
{
func cellDelegate(moneyValue: Int) -> Void {}
}

class CustomCell: UITableViewCell, UITextFieldDelegate
{
weak var delegate: CellDelegate?

var moneyValue: Int = Int()
var moneyAmount: String = String()
@IBOutlet weak var moneySlider: UISlider!
@IBAction func sliderValueChanged(_ sender: UISlider)
{
moneyValue = Int(sender.value)
moneyLabel.text = String(moneyValue)
moneyAmount = moneyLabel.text!

if delegate != nil {
delegate?.cellDelegate(moneyValue: moneyValue)
}
}
}

然后,在 viewcontroller.swift 中实现这个协议(protocol)。该值将从单元格传递到 View Controller 。

class CreateVC: UIViewController, CellDelegate
{
func cellDelegate(moneyValue: Int)
{
...
}
}

关于swift - 如何将自定义单元格类中的 "pass"信息发送到 viewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41309016/

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