无法从viewDidLoad外部访问Eureka表单对象

时间:2017-06-07 18:05:59

标签: ios swift forms viewdidload eureka-forms

我试图创建一个Eureka表单来编辑/创建一个任务对象。现在,我转向视图并将Task对象作为类变量传递,但由于某种原因,无法从 viewDidLoad 访问它,我在其中创建表单。这意味着我无法为表单指定值。当我为Task类变量创建 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"){
            $0.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")

1 个答案:

答案 0 :(得分:0)

好吧,经过调试后我发现Eureka表单视图有两个不同的实例。所以在挖掘之后我发现我做了两个segues做同样的事情。从故事板tableView单元格到表单,以及其他代码由 didSelectRowAt performSegue 组成。有趣的是,当我从调用窗体视图的控制器调试 prepare(for segue:)时,我没有找到这个,它应该打印输出两次,但我只看到一个,所以我我一直以为我只创造了一个segue。