繁体   English   中英

Swift:将值从一个类传输到另一个类或从 ViewController 类到 NSObject 的特定值

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

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

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

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

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

从下面的代码:

navBarHeight 获取导航栏的高度。 如何将该值转移到我的其他类(SettingsLauncher)?

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

MainViewController类中创建一个结构体,如下所示:

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
}

SettingsLauncher创建一个属性,如navHeight ,然后

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM