从任何 ViewController 访问 class 变量
Access class variable from any ViewController
我的应用程序有这样的结构:
我有一个存储多个 Patient() 的领域数据库。
TabViewController 有两个孩子:SearchViewController 和 详情ViewController
在SearchViewController中有一个TableView。
我可以 select 在多个患者之间 -Patient()- 在 TableView 中并将其存储在同一个 SearchViewController 在此变量内:var chosenPatient = ChosenPatient()
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
...
}
}
希望对您有所帮助!
要在不同选项卡(例如 SearchViewController
和 DetailViewController
的视图之间传递信息,我会使用 NSNotification
.
我会强烈抵制用大量通知填满您的应用程序的诱惑,因为这很快会使代码变得非常难以理解。
我的应用程序有这样的结构:
我有一个存储多个 Patient() 的领域数据库。
TabViewController 有两个孩子:SearchViewController 和 详情ViewController
在SearchViewController中有一个TableView。
我可以 select 在多个患者之间 -Patient()- 在 TableView 中并将其存储在同一个 SearchViewController 在此变量内:
var chosenPatient = ChosenPatient()
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
...
}
}
希望对您有所帮助!
要在不同选项卡(例如 SearchViewController
和 DetailViewController
的视图之间传递信息,我会使用 NSNotification
.
我会强烈抵制用大量通知填满您的应用程序的诱惑,因为这很快会使代码变得非常难以理解。