Rob*_*ith -2 xcode swift swift3
我试图从我的视图控制器(在类内部但在函数外部)创建全局变量,如下所示:
var modelData: CustomTabBarController.model // THE ERROR IS HERE
Run Code Online (Sandbox Code Playgroud)
这是该类的定义方式:
CustomTabBarController.swift:
import UIKit
// This class holds the data for my model.
class ModelData {
var name = "Fred"
var age = 50
}
class CustomTabBarController: UITabBarController {
// Instantiate the one copy of the model data that will be accessed
// by all of the tabs.
var model = ModelData()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
"'model' is not a member type of "CustomTabBarController"
Run Code Online (Sandbox Code Playgroud)
如何声明它以便可以访问模型?谢谢。
更新#1 对不起,我忘了提及这一点:
我需要模型数据在标签栏的每个标签中都相同。例如,如果我在第一个标签中将年龄更改为51,则第二个标签栏应检索51。以上是使用这种方法的正确方法吗?
更新#2
我可以根据院长的建议在函数内创建变量:
func setupModelData()
{
var modelData = (self.tabBarController as! CustomTabBarController).model
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,因为我需要从其他函数访问modelData。当我尝试将此行移到函数外时,如下所示:
import UIKit
class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
{
var modelData = (self.tabBarController as! CustomTabBarController).model
...
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Value of type '(NSObject) -> () -> FirstViewController' has no member 'tabBarController'
Run Code Online (Sandbox Code Playgroud)
我最终遵循了Holex关于创建共享类(单个)的建议:
import UIKit
class ModelData: NSObject {
static let shared: ModelData = ModelData()
var name = "Fred"
var age = 50
}
Run Code Online (Sandbox Code Playgroud)
在第一视图中书写:将年龄设置为51:
ModelData.shared.age = 51
Run Code Online (Sandbox Code Playgroud)
在第二视图中阅读:享年51岁
let age = ModelData.shared.age
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4622 次 |
| 最近记录: |