どうしてもViewを再読み込みしたいが、どうやってもうまくいかない、という場合、賢くないですがこの方法でいけます。
SwiftUIのお気持ちに沿って作っていればそもそも強制再読み込みは必要ないはずなので、対処法として正しいのは設計の見直しです。
対処
struct HogeView: View {
var body: some View {
Hoge()
}
}
を強制再読み込みしたい場合、
struct HogeView: View {
@State private var flag = true
func refresh(){
flag.toggle()
}
var mainView: some View {
Hoge()
}
var body: some View {
Group{
if flag{
mainView
}else{
mainView
}
}
}
}
としてあげれば、flagを切り替えるたびにmainViewが計算しなおされるので実質再読み込みになります。
自戒
本当に賢くないのでSwiftUIをちゃんと勉強します。