在选择器(SwiftUI)上选择特定值时如何更改var

时间:2019-12-06 14:31:06

标签: ios swift uipickerview swiftui

在UI选择器中选择useRed时,我需要将true的值更改为0%(或tipPercentage变成4)。

我尝试了以下操作,但显示警告“在视图更新期间修改状态,这将导致未定义的行为”,并且useRed的值仍为false

import SwiftUI

struct ContentView: View {


    @State private var tipPercentage = 2
    @State private var useRed = false

    let tipPercentages = [10, 15, 20, 25, 0]

    var redCheck: Bool {
        if tipPercentage == 4 {
            useRed = true
        } else { useRed = false }
        return useRed
    }


    var body: some View {

        NavigationView {
            Form {

                Section (header: Text("How much tips do you weant to leave?")){
                    Picker("Tip percentage", selection:
                    $tipPercentage) {
                        ForEach(0 ..< tipPercentages.count) {
                            Text("\(self.tipPercentages[$0])%")
                        }

                        }
                      .pickerStyle(SegmentedPickerStyle())
                }.foregroundColor(redCheck ? .red : .black)

            }
        }
    }

2 个答案:

答案 0 :(得分:0)

您可以使用功能设置颜色:

func updateColor() -> Color {
    if tipPercentage == 4 {
        return .red
    } else {
        return .black
    }
}

现在您可以像这样使用它:

.foregroundColor(self.updateColor())

现在,您不需要 redCheck 变量。

答案 1 :(得分:0)

您只需要删除redCheck:

GetPoint