如何使用EurekaForm Library / Swift获取所选值并在列表中设置默认值

时间:2018-07-20 11:51:53

标签: swift4 eureka-forms

我在项目中使用xCode 9Swift 4和“ Eureka表单库”。

情况:

我有一个带有列表和按钮的表格。

我需要解决以下2问题:

  1. 单击按钮时,我要打印选定的值
  2. 我希望能够为列表设置一个元素作为默认选定值

我的code

import UIKit
import Eureka

class myPage: FormViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        createForm()
    }


    func createForm(){
        form
        +++ Section("Sample list ")
        form +++ SelectableSection<ListCheckRow<String>>("Continents", selectionType: .singleSelection(enableDeselection: false))

        let continents = ["Africa", "Antarctica", "Asia", "Australia", "Europe", "North America", "South America"]

        for element in continents {
            form.last! <<< ListCheckRow<String>(element){ listRow in
                listRow.title = element
                listRow.selectableValue = element
                listRow.value = nil
            }
        }

        form.last! <<< ButtonRow("Button1") {row in
            row.title = "Get List Value"
            row.onCellSelection{[unowned self] ButtonCellOf, row in

            print ("Selected List Value = ????????")
        }
    }
}

谢谢。

1 个答案:

答案 0 :(得分:1)

用于打印所有表单值:

print(form.values())

这将打印由行values键入的所有格式tag的字典。

在这种情况下,它的打印如下(选择Australia

  

[“亚洲”:无,    “非洲”:无,    “南极洲”:无,    “澳大利亚”:可选(    “澳大利亚”),“欧洲”:无,    “南美”:无,    “ Button1”:无,    “北美”:无]

尤里卡(Eureka)的SelectableSection也有selectedRow()(用于多选selectedRows())方法。

因此,您可以获取如下所示的选定值:

首先只需将标签添加到SelectableSection中即可。

form +++ SelectableSection<ListCheckRow<String>>("Continents", selectionType: .singleSelection(enableDeselection: false)) { section in
   section.tag = "SelectableSection"
}

现在选择按钮

form <<< ButtonRow("Button1") { row in 
        .. // button setup
    }.onCellSelection { [unowned self] (cell, row) in
        if let section = self.form.section(by: "SelectableSection") as?
                               SelectableSection<ListCheckRow<String>> {
            print(section.selectedRow()?.value ?? "Nothing is selected") 
        }
    }

现在用于默认值选择:

let defaultContinent = "Antarctica" 

现在在Button的onCellSelection中:

}.onCellSelection { [unowned self] (cell, row) in
    .. // printing the selected row as above
    if let row = self.form.row(by: defaultContinent) as? ListCheckRow<String> {
       row.selectableValue = defaultContinent 
       row.didSelect()
    }
}