Ios Swift:将值从一个类转移到另一个类,或将特定值从ViewController类转移到NSObject

Ios Swift:将值从一个类转移到另一个类,或将特定值从ViewController类转移到NSObject,ios,swift,uiviewcontroller,nsobject,Ios,Swift,Uiviewcontroller,Nsobject,如何将值从UIViewController中的viewDidLoad传输到另一个类-NSObject 基本上我有一个MainViewController类,类内有一个导航栏。我想访问导航栏的高度,并将值传输到另一个文件/类,即->class SettingsLauncher:NSObject 访问导航栏高度的唯一方法是在MainViewController类的viewDidLoad内。这可能就是问题所在 SettingsLauncher需要获取导航栏的高度值,以便在导航栏的正下方显示一个小视图

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


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

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

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

代码如下:

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


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

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
}

谢谢你的回复。但是,当我打印navHeight时,它返回零。我遗漏了什么吗?你在哪里印刷?在MainViewController或SettingsLauncher中?我正在两者上打印它。它在主ViewController中工作正常,但在SettingsLauncher中打印出“nil”您可以共享SettingsLauncher类的代码片段吗?类SettingsLauncher:NSObject、UICollectionViewDataSource、UICollectionViewDelegate、UICollectionViewDelegateFlowLayout{var navHeight=MainViewController.structure.topBarHeight let collectionView:UICollectionView={let layout=UICollectionViewFlowLayout()let cv=UICollectionView(frame:.zero,collectionViewLayout:layout)返回cv}()类设置工具{var navHeight:CGFloat?}func showSettings(){let mainViewController=mainViewController()打印(导航高度,“
class SettingsLauncher {
    var navHeight = MainViewController.structure.topBarHeight
}