在多个条件下迅速将尤里卡隐藏行

时间:2018-06-25 19:42:17

标签: swift xcode eureka-forms

我试图基于多个条件隐藏ActionSheetRow,我试图设置一个if语句,但这不起作用。我想知道是否有人尝试过或遇到过这个问题?

<<< SwitchRow("switchRow"){
            $0.title = "The switch to hide the row when on"
        }
        <<< ActionSheetRow<String>("number") {
            $0.title = "How many sports will be played"
            $0.hidden = $0.hidden = Condition.function(["switchRow"], { form in
                return ((form.rowBy(tag: "switchRow") as? SwitchRow)?.value ?? false)
            })
            $0.selectorTitle = "How many sports will be played"
            while i <= places.count{

                choices.append("\(i)")

                i += 1

         }
            $0.options = choices
    }
        <<< ActionSheetRow<String>("firstSport"){
            $0.hidden = Condition.function(["playSport"], { form in
                return ((form.rowBy(tag: "playSport") as? SwitchRow)?.value ?? false)
            })
            $0.title = "Which is the first sport"
            $0.selectorTitle = "Which is the first sport?"
            $0.options = ["NBA", "MLB", "NFL",]
    }
<<< ActionSheetRow<String>("secondSport"){

        $0.title = "Which is the second sport"
        $0.selectorTitle = "Which is the second sport?"
        $0.options = ["NBA", "MLB", "NFL"]

        $0.hidden = Condition.function(["number"])
        { form in
            if let section = form.rowBy(tag: "number") as? ActionSheetRow<String> {
                if section.value == "1" {
                    return true
                }
            }
            return false
        }
    }

如果开关打开或用户在“数字” ActionSheetRow中选择1,我希望隐藏“ secondSport” ActionSheetRow。这有可能吗?

谢谢所有反馈。

1 个答案:

答案 0 :(得分:0)

对您来说可能为时已晚,但由于我在其他地方找不到正确的答案,因此我将其张贴在这里。

您可以使用输入字典中多行的结果隐藏条件,如下所示:

$0.hidden = .function(["SwitchRow1","SwitchRow2"], { form -> Bool in
                        let c1: Bool = ((form.rowBy(tag: "SwitchRow1") as? SwitchRow)?.value ?? false)
                        let c2: Bool = ((form.rowBy(tag: "SwitchRow2") as? SwitchRow)?.value ?? false)
                        let finalBool = c1 && c2
                        return (!finalBool)
                    })
                }

我已经以SwitchRow为例,但是如果您想将其用于其他类型的行,则条件语句应为true。