[英]present a ViewController from a Swift class derived from an 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.