簡體   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