他のファイルからViewControllerのUILabelを変更したい
実現したいこと・問題点
Swift初心者です。
表題の通り、他の.swiftファイルから直接、ViewController.swiftに関連付けされているUILabelのテキストを変更することはできないかと思い、後述のようなコードを書きました。
storyboard上にSliderとLabelを配置し、Sliderを変更した際の処理をLowPass.swift内に記述するというようにしています。
このまま実行するとビルドはされるのですが、Sliderの値を変更するとエラーが出てしまいます。
エラーの原因は、LowPass.swiftのvcにnilが入ってしまっていることだとは分かるのですが、改善策が分かりません。
どなたかご教授頂けますでしょうか。
該当のソースコード
//ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var slider: UISlider!
// LowPass.swiftのインスタンス生成
let lowPass = LowPass()
override public func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
slider.maximumValue = Float(150)
slider.minimumValue = 0
slider.setValue(lowPass.R, animated: true)
slider.addTarget(lowPass, action: #selector(lowPass.RChange(sender:)), for: UIControl.Event.valueChanged)
label.text = String(lowPass.R)
}
}
//LowPass.swift
import UIKit
class LowPass: NSObject {
weak var vc: ViewController!
var R: Float = 30.0
@objc func RChange(sender: UISlider){
R = Float(sender.value)
vc.label.text = String(R)
}
}