gpt4 book ai didi

ios - VC 用 UISlider 更改 VC2 上的文本字段

转载 作者:行者123 更新时间:2023-11-30 11:52:19 24 4
gpt4 key购买 nike

我有一个 View Controller ,它有一个嵌入到 ContainerView 中的 tableView,并且在 ContainerView 下方我有一个 UISlider。我在 UISlider 的 View Controller 上有代码,在另一个控制 TableView 的 View Controller 上有代码。

UISlider 的属性是根据选定的文本字段设置的 - 这部分代码有效。我正在努力创建一个在 UISlider 移动时更改 textField 值的函数/特性。我认为 UISlider Action 需要控制 UISlider 的代码,但当 slider 移动以更新位于 tableCell 中的 textField 时,我无法确定如何在两个 viewController 之间转换 UISlider.setvalue 的值。希望有一定道理。

   // UISlider ViewController

override func viewDidLoad() {
super.viewDidLoad()

sliderOutlet.isContinuous = true
sliderOutlet.tintColor = UIColor.green
self.refreshSlider()

}

@objc func refreshSlider() {
sliderOutlet.minimumValue = Float(GlobalSliderValues.minimumValue)
sliderOutlet.maximumValue = Float(GlobalSliderValues.maximumValue)
sliderOutlet.value = Float(GlobalSliderValues.sliderValue)


// if let chgIntValue = Int(GlobalSliderValues.changeValue)
// { sliderOutlet.setValue(Float(Double(chgIntValue)), animated: true)
// }

}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(self.refreshSlider), name: Notification.Name("refreshSlider"), object: nil)
}

override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
NotificationCenter.default.removeObserver(self, name: Notification.Name("refreshSlider"), object: nil)
}

表格 View Controller

 override func viewDidLoad() {

super.viewDidLoad()
mortgageAmount.addTarget(self, action: #selector(chgTextFieldDidChange(textField:)), for: UIControlEvents.editingChanged)
}

@objc func chgTextFieldDidChange(textField: UITextField)
{

if let chgStringValue = mortgageAmount.text
{
if Double(chgStringValue) ?? 1 > 10000 {
let alert = UIAlertController(title: "Input Error", message: "Value cannot be greater than 10000", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))

self.present(alert, animated: true, completion: nil)
return
}

GlobalSliderValues.minimumValue = 10
GlobalSliderValues.maximumValue = 10000
GlobalSliderValues.sliderValue = Int(mortgageAmount.text!)!
GlobalSliderValues.mortageAmountValue = Float(Int(mortgageAmount.text!)!)

NotificationCenter.default.post(name:Notification.Name("refreshSlider"), object: nil)

if let chgIntValue = Int(chgStringValue)
{ GlobalSliderValues.changeValue.setValue(Float(Double(chgIntValue)), animated: true)
}
}
}
@IBAction func valueChanged(_ sender: UISlider) {

mortgageAmount.text = String(format: "%.2f",Double(sender.value))
}

struct GlobalSliderValues {

static var minimumValue = Int()
static var maximumValue = Int()
static var lowerValue = Int()
static var UpperValue = Int()
static var locationValue = Int()
static var sliderValue = Int()
static var sliderChgValue = ""


}

最佳答案

我们不需要通知中心来处理刷新 slider 。由于我们使用常量来存储值,因此您的代码可以更改如下

class ViewController: UIViewController {
@IBOutlet weak var sliderOutlet: UISlider!

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
sliderOutlet.isContinuous = true
sliderOutlet.tintColor = UIColor.green

}

@objc func refreshSlider() {
DispatchQueue.main.async {
self.sliderOutlet.minimumValue = Float(GlobalSliderValues.minimumValue)
self.sliderOutlet.maximumValue = Float(GlobalSliderValues.maximumValue)
self.sliderOutlet.value = Float(GlobalSliderValues.sliderValue)
print(self.sliderOutlet.minimumValue)
print(self.sliderOutlet.maximumValue)
print(self.sliderOutlet.value)
}
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.refreshSlider()
}

}

我输入的抵押贷款金额为 1098,因此 slider 如下所示

enter image description here

关于ios - VC 用 UISlider 更改 VC2 上的文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48216631/

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