在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)
}
}
}
答案 0 :(得分:0)
您可以使用功能设置颜色:
func updateColor() -> Color {
if tipPercentage == 4 {
return .red
} else {
return .black
}
}
现在您可以像这样使用它:
.foregroundColor(self.updateColor())
现在,您不需要 redCheck 变量。
答案 1 :(得分:0)
您只需要删除redCheck:
GetPoint