ViewController的方法有很多种,以下是其中一种方法:
示例代码如下:
在第一个ViewController中:
protocol SliderDelegate: class {
func sliderValueChanged(value: Float)
}
class FirstViewController: UIViewController {
weak var delegate: SliderDelegate?
@IBAction func sliderValueChanged(_ sender: UISlider) {
delegate?.sliderValueChanged(value: sender.value)
}
}
在第二个ViewController中:
class SecondViewController: UIViewController, SliderDelegate {
func sliderValueChanged(value: Float) {
// 处理传递过来的UISlider的值
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let firstViewController = segue.destination as? FirstViewController {
firstViewController.delegate = self
}
}
}
示例代码如下:
在第一个ViewController中:
class FirstViewController: UIViewController {
@IBAction func sliderValueChanged(_ sender: UISlider) {
NotificationCenter.default.post(name: NSNotification.Name("SliderValueChanged"), object: sender.value)
}
}
在第二个ViewController中:
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(sliderValueChanged(_:)), name: NSNotification.Name("SliderValueChanged"), object: nil)
}
@objc func sliderValueChanged(_ notification: Notification) {
if let value = notification.object as? Float {
// 处理传递过来的UISlider的值
}
}
deinit {
NotificationCenter.default.removeObserver(self)
}
}
这两种方法都可以实现将UISlider的值从一个ViewController传递到另一个ViewController。具体选择哪种方法取决于你的需求和项目架构。
领取专属 10元无门槛券
手把手带您无忧上云