同じボタンがタップされた時は処理をせず、値に変更があった場合のみ処理をしたい
enum Type: String, CaseIterable {
case hoge, fuga, piyo
}
struct HogeView: View {
@State private var type: Type = .hoge
var body: some View {
ForEach(Type.allCases, id: \.self) { type in
Button(type.rawValue) {
self.type = type
}
}
.onChange(of: type) { [oldValue = type] newValue in
if oldValue != newValue {
// do something
}
}
}
}
iOS17で非推奨になった模様
iOS17+