Я пытался использовать троичный оператор в SwiftUI, чтобы сделать некоторые модификаторы представления «Dynami c» на основе значения @State
var, которое я объявил. Но, похоже, SwiftUI не полностью поддерживает этот оператор внутри модификаторов представления. Это ошибка? Что мне здесь не хватает?
struct Test: View {
@State var selectedIdx: Int?
var colors : [Color] = [.red, .orange, .yellow, .green, .blue]
var body: some View {
VStack {
//some other views that change "selectedIdx" (the @State var)
//...
ForEach(0..<colors.count) { idx in
Rectangle()
.frame(width: 70, height: 100)
//some other view modifiers that will be animated
.animation(Animation.easeInOut.delay(self. selectedIdx == nil ? 0.1*Double(self.colors.count - idx) : 0.1*Double(idx)))
}
}
}
}
Ошибка исчезнет, если я удалю троичный оператор. Я пробовал разные комбинации для троичного оператора, но ни одна из них не работает:
.animation(Animation.easeInOut.delay(0.1*Double(self.selectedIdx == nil ? self.colors.count - idx : idx)))
.animation(Animation.easeInOut.delay(self.selectedIdx == nil ? 0.1*Double(self.colors.count - idx) : Double(idx)))
И даже что-то простое, подобное следующему, не работает:
.animation(Animation.easeInOut.delay(self.selectedIdx == nil ? Double(idx) : Double(idx)))
Любые идеи о правильное использование тернарного оператора внутри модификаторов вида?