无法从 viewDidLoad 外部访问 Eureka 表单对象
Can't access Eureka form object from outside viewDidLoad
我正在尝试创建用于编辑/创建任务对象的 Eureka 表单。现在,我转到视图并将任务对象作为 class 变量传递,但由于某种原因无法从我创建表单的 viewDidLoad 访问它。这意味着我无法为表单赋值。当我为 Task class 变量创建 didSet 方法时,它最终会被调用,但是当我查看 时,表单对象是一个空对象form.values() 什么都没有。但在 viewDidLoad 它有效。有什么建议我错过了什么吗?
var task: Task? { didSet { print("didSet values:", form.values(), "didSet task name", task?.name) } }
override func viewDidLoad() {
super.viewDidLoad()
form +++ Section()
<<< TextRow("name"){
[=10=].title = "Name"
}
print("viewDidLoad values:", form.values(), "viewDidLoad task name", task?.name)
}
并输出
viewDidLoad values: ["name": nil, "deadline": Optional(2017-06-08 19:02:39 +0000)] viewDidLoad task name nil
didSet values: [:] didSet task name Optional("ascasc")
嗯,调试后发现Eureka表单视图有两个不同的实例。所以在挖掘之后我发现我做了两个 segue 做同样的事情。一种是从故事板 tableView 单元格到表单,另一种是通过 didSelectRowAt 和 performSegue 的代码。有趣的是,当我从调用表单视图的控制器调试 prepare(for segue:) 时,我没有发现它,它应该打印输出两次,但我只看到一个,所以我一直认为我只创建了一个 segue。
我正在尝试创建用于编辑/创建任务对象的 Eureka 表单。现在,我转到视图并将任务对象作为 class 变量传递,但由于某种原因无法从我创建表单的 viewDidLoad 访问它。这意味着我无法为表单赋值。当我为 Task class 变量创建 didSet 方法时,它最终会被调用,但是当我查看 时,表单对象是一个空对象form.values() 什么都没有。但在 viewDidLoad 它有效。有什么建议我错过了什么吗?
var task: Task? { didSet { print("didSet values:", form.values(), "didSet task name", task?.name) } }
override func viewDidLoad() {
super.viewDidLoad()
form +++ Section()
<<< TextRow("name"){
[=10=].title = "Name"
}
print("viewDidLoad values:", form.values(), "viewDidLoad task name", task?.name)
}
并输出
viewDidLoad values: ["name": nil, "deadline": Optional(2017-06-08 19:02:39 +0000)] viewDidLoad task name nil
didSet values: [:] didSet task name Optional("ascasc")
嗯,调试后发现Eureka表单视图有两个不同的实例。所以在挖掘之后我发现我做了两个 segue 做同样的事情。一种是从故事板 tableView 单元格到表单,另一种是通过 didSelectRowAt 和 performSegue 的代码。有趣的是,当我从调用表单视图的控制器调试 prepare(for segue:) 时,我没有发现它,它应该打印输出两次,但我只看到一个,所以我一直认为我只创建了一个 segue。