从任何 ViewController 访问 class 变量

Access class variable from any ViewController

我的应用程序有这样的结构:

class ChosenPatient 来自 ModelController:

class ChosenPatient: NSObject {
    var data = Patient()
    { ... multiple functions ... }    
}

在我的搜索 ViewController 的 updateLabels() 中,我只需要访问:

label.stringValue = chosenPatient.data.name/lastName/age etc

但我想在我的详细信息中做同样的事情ViewController。只是我想要一个函数 updateLabels() 来检索我在搜索 ViewController 中选择的 SAME 患者并访问患者拥有的所有信息。

我已经阅读了有关 NSNotifications、Delegates 和 Segues 的内容,但我找不到适合我的应用方案的好的解释方法。

我想要一个具有唯一 Patient() 的 GLOBAL 变量,并以简单明了的方式从任何 ViewController 访问 patient.data。

此致:)

[使用 XCODE 8.3,swift 3.2,适用于 macOS 的应用程序]

如果是一对一关系,我通常会使用协议委托模式。除非绝对必要,否则您不会希望保留任何变量。

为您的 UITabBarController 自定义 class 并将 SearchViewController 分配给 DetailViewController 数据源。

protocol ChosenPatientDataSource: class {
    var chosenPatient: ChoosenPatient { get }
}

class SearchViewController: UITableViewController, ChosenPatientDataSource {
    var chosenPatient = ChosenPatient()
}

class DetailViewController: UIViewController {
    weak var dataSource: ChosenPatientDataSource?

    func useChosenPatient() {
        let chosenPatient = dataSource?.chosenPatient
        ...
    }
}

希望对您有所帮助!

要在不同选项卡(例如 SearchViewControllerDetailViewController 的视图之间传递信息,我会使用 NSNotification.

我会强烈抵制用大量通知填满您的应用程序的诱惑,因为这很快会使代码变得非常难以理解。