実現したいこと・問題点

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

}