実現したいこと
SwiftUIで.toggle()で変数のBool値が反転しても画面が再描画されない方法を教えていただきたいです。
具体的には、目のアイコンを押すと非表示にできるボタンを実装したいのですが、画面の再描画はさせたくないです。
該当のソースコード
Swift
1@State var isHidden: Bool = false 2 3Button(action: { 4 isHidden.toggle() 5}){ 6 // 目のアイコンを変える 7 Image(systemName: self.isHidden ? "eye.slash.fill": "eye.fill") 8}
試したこと
@Stateは変数が変わると自動的に再描画されると思うので@Stateを取ってみましたが、以下のエラーが出ます。。
Swift
1var isHidden: Bool = false 2 3Button(action: { 4 isHidden.toggle() 5}){ 6 // 目のアイコンを変える 7 Image(systemName: self.isHidden ? "eye.slash.fill": "eye.fill") 8}
Cannot use mutating member on immutable value: 'self' is immutable
アイコンを変えるには再描画が必要だと思いますが…。
