gpt4 book ai didi

ios - 单击表行时更改 UISlider Controller

转载 作者:行者123 更新时间:2023-11-28 07:56:14 24 4
gpt4 key购买 nike

我想创建一个 UISlider,当用户选择一个 TableView 行时。它更新最小值和最大值,将 slider 移动到由变量设置的值。

slider 位于与 TableView 不同的 View Controller 中。我正在使用结构(在下面发布)将值传递给 slider 。此时,当我在 View Controller viewDidLoad 中设置结构值时,我可以让 slider 工作。 But I am not able to change the UIslider when a tableview row is selected.我认为问题在于,选择行时,使用Uislider的 View 并没有令人耳目一新。 Tableview 使用容器 View 嵌入到带有 slider 的 View 中。

     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 setValue = Int()
}

// Slider ViewController

override func viewDidLoad() {
super.viewDidLoad()

sliderOutlet.minimumValue = Float(GlobalSliderValues.minimumValue)
sliderOutlet.maximumValue = Float(GlobalSliderValues.maximumValue)
sliderOutlet.isContinuous = true
sliderOutlet.tintColor = UIColor.green
sliderOutlet.value = Float(GlobalSliderValues.sliderValue)

}


// Method attempting to change Slider

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

switch indexPath.row {
case 3:
GlobalSliderValues.minimumValue = 100
GlobalSliderValues.maximumValue = 10000000
GlobalSliderValues.sliderValue = 100000000

default:
break
}
}

最佳答案

尝试重构 slider 分配并添加 NotificationCenter 以便能够从任何地方刷新 slider ,这样做:

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)
}

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)
}

最后在您的 didSelectRowAt 中,您将拥有:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.row {
case 3:
GlobalSliderValues.minimumValue = 100
GlobalSliderValues.maximumValue = 10000000
GlobalSliderValues.sliderValue = 100000000
NotificationCenter.default.post(name:Notification.Name("refreshSlider"), object: nil)
break:
default:
break
}
}

关于ios - 单击表行时更改 UISlider Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48000722/

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