Swift:将值从一个 class 转移到另一个,或者从 ViewController class 转移到 NSObject

Swift: Transfer value from one class to another or to be specific from ViewController class to NSObject

如何将值从 UIViewController 中的 viewDidLoad 传输到另一个 class - NSObject。

基本上我有一个 MainViewController class,class 里面是一个导航栏。我想访问导航栏的高度并将值传输到另一个 file/class 这是 -> class SettingsLauncher: NSObject.

我可以访问导航栏高度的唯一方法是在 MainViewController 的 viewDidLoad 中 class。这可能是问题所在!

SettingsLauncher 需要获取导航栏的高度值,以便在导航栏正下方显示一个小视图。

来自以下代码:

navBarHeight 获取导航栏的高度。我如何将该值转移到我的另一个 class (SettingsLauncher)?

let statusBarHeight = UIApplication.shared.statusBarFrame.size.height
let navBarHeight= self.navigationController?.navigationBar.frame.height ?? 0.0
let topBarHeight = statusBarHeight + navBarHeight

navHeight一样在SettingsLauncher中创建一个属性,然后

class SettingsLauncher {
    var navHeight: CGFloat?
}

MainViewController,

class MainViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let statusBarHeight = UIApplication.shared.statusBarFrame.size.height
        let navBarHeight= self.navigationController?.navigationBar.frame.height ?? 0.0
        let topBarHeight = statusBarHeight + navBarHeight

        let settings = SettingsLauncher()
        settings.navHeight = topBarHeight //navBarHeight
    }
}

MainViewController class 中创建一个结构,像这样:

class MainViewController: UIViewController {

    struct structure {
        static var topBarHeight = CGFloat()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        let statusBarHeight = UIApplication.shared.statusBarFrame.size.height
        let navBarHeight= self.navigationController?.navigationBar.frame.height ?? 0.0
        structure.topBarHeight = statusBarHeight + navBarHeight
    }
}

然后用它来访问 SettingsLauncher 对象的值:

class SettingsLauncher {
    var navHeight = MainViewController.structure.topBarHeight
}