gpt4 book ai didi

ios - UISlider 值更改未触发

转载 作者:搜寻专家 更新时间:2023-11-01 06:03:44 25 4
gpt4 key购买 nike

我在这样的类中有一个 UISlider 对象:

class SliderObject {
// Other properties
@IBOutlet weak var slider: UISlider!
@IBAction func valChange(_ sender: Any) {
// Not called
}

func getView() -> UIView {
// Return a UIView with the slider in it - the slider is in a nib
return Bundle.main.loadNibNamed("SliderObjectNib", owner: self, options: nil)?.first as! UIView
}
}

// In some other View Controller
var s: SliderObject? // <---- This is the solution.. Keep a strong reference to the variable so it won't get released after `viewDidLoad` returns
func viewDidLoad() {
s = SliderObject()
self.view.addSubView(s.getView())
}

一切都很好。我可以在我的 View Controller 上看到 slider 并与之交互,但是当我滑动 slider 时 valChange 函数永远不会被调用...有什么想法吗?

最佳答案

您正在从一个类调用一个方法到另一个类。此引用在局部变量中创建,将在该方法退出时释放。它尝试调用无效对象上的函数。使用委托(delegate) - 为该方法定义一个协议(protocol),并让您的 View Controller 实现该协议(protocol)。然后您可以将 View Controller 传递给该方法。

关于ios - UISlider 值更改未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43014244/

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