![](/img/trans.png)
[英]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.