gpt4 book ai didi

swift - 从任何 ViewController 访问类变量

转载 作者:行者123 更新时间:2023-11-30 11:49:05 24 4
gpt4 key购买 nike

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

  • 我有一个存储多个 Patient() 的领域数据库。

  • TabViewController 有两个子级:SearchViewControllerDetailViewController

  • SearchViewController中,有一个TableView

  • 我可以在 TableView 中的多个患者 -Patient()- 之间进行选择并将其存储在该变量内的同一个 SearchViewController 中: var selectedPatient =选择患者()

ChosenPatient 类来自 ModelController:

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

我在 SearchViewController 的 updateLabels() 中所需要的就是访问:

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

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

我已经阅读过有关 NSNotifications、Delegates 和 Segues 的内容,但我找不到可以适应我的应用程序方案的良好解释方法。

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

问候:)

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

最佳答案

如果是一对一的关系,我通常会使用协议(protocol)委托(delegate)模式。除非绝对必要,否则您不会希望将任何变量保持为全局。

为您的UITabBarController创建一个自定义类,并将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
...
}
}

希望对大家有帮助!

关于swift - 从任何 ViewController 访问类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48524600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com